我希望能够使用 upstart 来管理我无法完全控制分叉行为的守护进程。“pid”节从 0.3.9 版本开始被删除,所以我不能将它指向一个 pid 文件。解决这个问题的正确方法是什么?我是否必须编写一个发出 SIGSTOP 的包装脚本?
我想使用 Mongo init 脚本启动具有 auth 支持的 MongoDB 守护进程:
sudo /etc/init.d/mongod start
Run Code Online (Sandbox Code Playgroud)
我还将 db 用户添加到数据库中以进行身份验证。我正在处理两个文件:(/etc/init.d/mongod用于初始化)和/etc/mongod.conf(用于配置)。
#mongod.conf:
dbpath=/var/lib/mongodb
logappend=true
port = 27017
auth = true
Run Code Online (Sandbox Code Playgroud)
非守护进程方法使用以下--auth标志正确启动进程:
mongod --auth
Run Code Online (Sandbox Code Playgroud)
fork 可以工作,但这不使用 init 脚本:
mongod --fork --auth --logpath /var/log/mongod.log
Run Code Online (Sandbox Code Playgroud)
阅读所有文档和相关帖子,似乎没有人有一个可行的解决方案来获得身份验证支持
service mongod start
Run Code Online (Sandbox Code Playgroud)
链接:
更新:我重新安装的Debian /蒙戈,并能使用service mongod start同auth = true在的conf文件。我可能在初始安装/配置期间破坏了某些东西。
我正在 AMI Linux 盒子上的 jenkins 服务器上运行无头 selenium 进程,所有进程均由 runit 管理。
问题是,发出“sv stop selenium”或“sv reload selenium”不会终止或杀死其子进程中的旧实例,而只是将它们与runsv进程分离,因此它们在runit不知道的情况下继续运行,从而导致尝试重新启动服务失败。
我认为我的问题与此有关: How to write runit custom stop script
意思是:我可能应该尝试自定义 d 控制脚本,以便手动清理。
我遵循这个想法: /sf/ask/27441571/
然而,从 /etc/sv/selenium/supervise/pid 中获取 pid 并将其转发到循环并没有任何区别。
有什么建议吗?
sv运行脚本:
#!/bin/sh
exec 2>&1
exec chpst -u jenkins -U jenkins /usr/bin/xvfb-run \
--server-args="-screen 0 1024x768x32" \
/usr/bin/java -jar /usr/local/bin/selenium-server-standalone-2.42.1.jar \
-ensureCleanSession \
-browserSessionReuse
Run Code Online (Sandbox Code Playgroud) 在我的 Ubuntu 服务器上,我使用God来监控一些 Ruby 进程/脚本,包括一个队列系统。
上帝会自动检查我的进程之一何时存在并重新启动它。它还跟踪内存使用情况,并在触发特定条件时正确操作。今天我重新启动了服务器,过了一会儿我发现我的队列不起作用。快速检查后,我发现服务器重启后上帝没有重启(我认为应该)。
确保上帝(或通用进程)在服务器重新启动时或进程因任何原因被终止时自动重新启动的最佳方法是什么?
我用来启动 God 的具体命令是
god -c config
Run Code Online (Sandbox Code Playgroud) 是否可以在没有浏览器的情况下运行 Opera unite 服务器?
比如说我想使用我的永远在线的 FreeBSD 服务器,它不运行 X。
我不是我的服务器 (linux) 上的 root,并且该服务器当前没有将 mysql 服务器作为守护程序运行。
我可以启动一个仅适用于我的帐户以及数据/文件将存储在 ${HOME}/... 中的某个位置的 mysql 守护进程吗?怎么做到呢 ?
谢谢,皮埃尔
我有一个命令(程序),我想用 nohup 和后台运行它。喜欢
nohup command > logfile.txt &
Run Code Online (Sandbox Code Playgroud)
如何找出进程ID?我希望能够将进程 ID 写入文件,稍后读取并以编程方式终止进程。
我已经在我的 amazon linux 服务器上设置并测试了 celery,使用 mysql 作为消息后端,并且在直接运行程序时它工作正常。我的 python 项目和 celery 安装位于 virtualenv 中。但是,如果我尝试使用此处的脚本来守护 celery ,该程序将拒绝在后台运行。
我正在使用 CELERYD="/opt/apps/myenv/[celeryd 路径]" 将 celery 的 virtualenv 安装位置传递给配置文件中的守护程序,这等同于在启动 celeryd 时使用标志 --cmd。
脚本总是在启动工作节点 1 后停止并等待,就好像我是直接运行程序而不是对其进行守护程序一样。芹菜此时处于活动状态,但在我关闭终端窗口或按 ctrl-c 后停止。
我试过在没有 --cmd 的情况下运行它,它似乎在后台运行,但工作人员不会启动,并且调用 stop 会返回一个“未知实例”。
任何建议,将不胜感激。
如何才能做到这一点?我知道这很简单,包括在启动 init 脚本的实际命令中附加类似&或&>的内容。
但是,假设日志文件是 /var/log/customDaemon.log ,最好的方法是什么,如何确保 init 脚本自行分离?
这是我拥有的初始化脚本。我也不确定脚本中的方法是整洁的还是只是一个讨厌的黑客。
#!/bin/bash
#
# /etc/rc.d/init.d/customDaemon
#
# description: "The Daemon"
# processname: customDaemon
# pidfile: "/var/run/customDaemon.pid"
# Source function library.
. /etc/rc.d/init.d/functions
start() {
echo "Starting customDaemon"
/var/customDaemon &> /dev/null &
return 1
}
stop() {
echo "Stopping tweriod"
prockill customDaemon
return 2
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
restart
;;
status)
status customDaemon
;;
*)
echo "Usage: customDaemon …Run Code Online (Sandbox Code Playgroud)