我有一个使用C命令fork()作为守护进程运行的程序。它创建一个在后台运行的新实例。之后存在主要实例。
检查服务是否正在运行的最佳选择是什么?我在考虑:
ps | grep
在正在运行的进程列表中查找程序。感谢。
答案 0 :(得分:1)
我认为使用supervisord或其他过程控制系统来管理您的流程会更好。
答案 1 :(得分:0)
创建一个每隔几分钟运行一次的cron作业(或者你喜欢的任何东西)并执行以下操作:
/path/to/is_script_stopped.sh && /path/to/script.sh
使用您建议的任何方法编写is_script_stopped.sh
。如果您的脚本被停止,cron将评估您的脚本,如果没有,它将不会。
答案 2 :(得分:0)
对于这个问题,你在标题中给出了:
这个简单的无限循环会在失败后立即重启你的程序:
#!/bin/bash
for ((;;))
do
yourProgram
done
如果您的程序依赖于可能失败的资源,那么插入一个短暂的暂停是明智的,以避免在每秒数百万次失败时捕获所有系统资源:
#!/bin/bash
for ((;;))
do
yourProgram
sleep 1
done
来自帖子正文的问题:
检查服务是否正在运行的最佳选择是什么?
如果你的ps
有一个-C选项(比如Linux ps),那么你会更喜欢ps ax | grep
组合。
ps -C yourProgram