使用 Kill 命令监控进程

作者:LJ Staff

如果您有一个进程 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

加载 Disqus 评论