我在后台运行了一些php进程,monit作为他们的经理。 我目前的monitconfiguration如下所示:
check process myprocess1 matching "process1.php" start program = "/usr/bin/php /path/to/process1.php > /var/log/process1.log" stop program = "/usr/bin/pkill /path/to/process1.php"
(再一次记住,有几个这样的进程。)这对于启动进程是有效的,但是对于停止这些进程是非常有用的 – 停止尝试失败,monat“未能停止”消息。 我目前对这种情况的诊断是失败,因为pkill没有find进程:执行类似的pgrep /path/to/process1.php无法find任何东西。 ps ax显示,除其他外:
5307 ? S 0:00 /usr/bin/php /path/to/process1.php
同时, pgrep php成功find了所有php进程的pid,但是我只想要杀死其中的一个。
所以:有没有办法在这里得到我想要的? 我并不是想用pkill,但似乎是很好的想法。
检查pgrep / pkill的f标志完整。
-f, – 完全使用完整进程名称进行匹配
我不是100%肯定,这将有助于你,但如果你已经有了process1.php这将帮助你杀死适当的程序。
例如:我运行“php rob / conmon.php”,pgrep -f“php rob / conmon.php”返回正确的PID和pkill -f“php rob / conmon.php”等价地杀死了PID。
希望这可以帮助!