使用 Kill 命令监控进程
发布于 2008 年 8 月 14 日
如果您有一个进程 ID,但不确定它是否有效,您可以使用最不可能的候选对象来测试它:kill 命令。 如果您在 kill(1) 的 man 手册上没有看到任何相关信息,请查看 info 页面。 man/info 页面指出信号 0 是特殊的,kill 的退出代码会告知是否可以将信号发送到指定的进程(或多个进程)。
因此,kill -0
不会终止进程,并且可以使用返回状态来确定进程是否正在运行。 例如
$ echo $$ # show our process id 12833 $ /bin/bash # create new process $ echo $$ # show new process id 12902 $ kill -0 12902 $ echo $? # exists, exit code is 0 0 $ exit # return to previous shell $ kill -0 12902 bash: kill: (12902) - No such process $ echo $? # doesn't exist, exit code is 1 1
许多 UNIX 守护程序在启动时将其进程 ID 存储在 /var/run 的文件中。 使用 kill -0
测试 pid 比解析 ps
输出容易得多。 例如,要测试 cron 是否正在运行,请执行以下操作
# kill -0 $(cat /var/run/cron.pid) # echo $? 0