检查某个进程是否正在运行、若未运行则启动的最优雅的方法?

检查某个进程是否正在运行、若未运行则启动的最优雅的方法?

我一直在尝试各种在 bash 中执行此操作的方法,我发现pgrep program > /dev/null || program这是最短/最优雅的方法。有没有比这更好的方法?

答案1

使用pgrep,您可能会匹配除您自己的程序之外的其他程序。如果您想确保匹配正确的程序,请使用pidof

您还可以使用start-stop-daemonPID 文件。start-stop-daemon将检查程序是否正在运行,并在需要时启动它。这是大多数 init 脚本中使用的。

答案2

[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 

相关内容