使用 Kill 命令监控进程

作者:Rich Lundeen

如果您有一个进程 ID,但不确定它是否有效,您可以使用最不可能的候选者
来测试它:kill 命令。如果您在 kill(1) 手册页上看不到任何相关信息,请检查 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

加载 Disqus 评论