|
|
1
700
避免使用PID文件、cron或任何其他试图评估不是其子进程的进程。 有一个很好的理由可以解释为什么在UNIX中,您只能照看您的孩子。任何试图解决有缺陷且存在漏洞的方法(ps解析、pgrep、存储PID等)。就说 不 . 相反,您需要监视流程的流程成为流程的父级。这是什么意思?它只意味着 开始 您的流程可以可靠地等待它结束。在bash中,这绝对是微不足道的。
上面的bash代码运行
我们为什么要等一会儿?因为如果启动顺序有问题
然后添加一条规则以启动监视器脚本:
编辑 让我补充一下原因 使用PID文件。虽然他们很受欢迎;它们也有很大的缺陷,你没有理由不按正确的方式去做。 考虑一下:
Are PID-files still flawed when doing it 'right'?
顺便说一句
比PID文件更糟糕的是解析
如果你不想自己管理这个过程;有一些非常好的系统可以作为流程的监视器。调查 runit |
|
|
2
42
看看莫尼特( http://mmonit.com/monit/ )。它处理脚本的启动、停止和重新启动,并可以执行运行状况检查,必要时还可以重新启动。 或者做一个简单的脚本:
|
|
|
3
9
在shell中,您可以实际测试它是否正在运行:
但当然,您不必进行测试,因为如果它已经在运行,并且您重新启动它,它将以
|
|
|
4
6
从文档中: http://mmonit.com/monit/documentation/monit.html#pid_testing check process checkqueue.py with pidfile /var/run/checkqueue.pid
if changed pid then exec "checkqueue_restart.sh"
您还可以将monit配置为在重新启动时向您发送电子邮件。 |
|
5
5
|
|
|
6
2
具体来说,这组命令包括“不断运行一个”,这似乎正是所需要的。 从手册页:
|
|
7
2
一致:
例如
|
|
8
1
我在许多服务器上成功地使用了以下脚本:
这个脚本实际上用于关闭tomcat的一个正在运行的实例,我想在命令行关闭(并等待),因此我不想将它作为子进程启动。 |
|
|
9
1
我将其用于我的npm流程
|
|
|
Bruno Peixoto · Cron job和docker 2 年前 |
|
|
CBugnacki · 递归函数,Next JS 14 2 年前 |
|
|
kevin · Cronos工作-当周末恰好是一个月的第一天时发布 2 年前 |