joh*_*ler 17 linux rhel upstart
我正在使用upstart来启动/停止/自动重启守护进程.其中一个守护进程分叉4次.该新贵食谱指出,它仅支持分叉两次.有解决方法吗?
如果我尝试使用expect daemon
或者expect fork
,upstart使用第二个分叉的pid.当我试图停止工作时,没有人响应新手SIGKILL信号,它会挂起,直到你耗尽pid空间并循环回来.如果添加respawn会变得更糟.Upstart认为这份工作已经死亡并立即开始另一项工作.
已经为暴发户输入了一个错误.提出的解决方案坚持使用旧的sysvinit,重写您的守护进程,或等待重写.RHEL比最新的upstart软件包差不多2年,所以当重写发布时我们得到更新,等待可能会是4年.守护程序由承包商的分包商的分包商编写,因此不会很快修复.
joh*_*ler 20
我想出了一个丑陋的黑客来完成这项工作.它适用于我的系统上的应用程序.因人而异.
env DAEMON=/usr/bin/forky-application
pre-start script
su -s /bin/sh -c "$DAEMON" joeuseraccount
end script
script
sleepWhileAppIsUp(){
while pidof $1 >/dev/null; do
sleep 1
done
}
sleepWhileAppIsUp $DAEMON
end script
post-stop script
if pidof $DAEMON;
then
kill `pidof $DAEMON`
#pkill $DAEMON # post-stop process (19300) terminated with status 1
fi
end script
Run Code Online (Sandbox Code Playgroud)
使用pid文件可以采用类似的方法.
归档时间: |
|
查看次数: |
7668 次 |
最近记录: |