Linux 系统下检查某个进程号是否存在的命令 kill -0

yufei       3 月, 1 周 前       144

Unix 系统下检查某个进程号是否存在的取巧办法

kill -0 [pid]

例如,我们可以先查询下当前所有的 php-fpm 的进程

yufei$ ps aux | grep php-fpm
yufei              536   0.0  0.0  4525236      8   ??  S    201219    0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei              535   0.0  0.0  4525236      8   ??  S    201219    0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei              439   0.0  0.0  4525492    100   ??  S    201219    0:12.42 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei            17904   0.0  0.0  4269080    820 s001  S+    4:06下午   0:00.00 grep php-fpm

然后可以使用 kill -0 536 来判断进程是否存在

kill -0 536

再查询下当前所有的 php-fpm 的进程

yufei$ ps aux | grep php-fpm
yufei              536   0.0  0.0  4525236      8   ??  S    201219    0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei              535   0.0  0.0  4525236      8   ??  S    201219    0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei              439   0.0  0.0  4525492    100   ??  S    201219    0:12.42 /usr/local/opt/php/sbin/php-fpm --nodaemonize
yufei            17904   0.0  0.0  4269080    820 s001  S+    4:06下午   0:00.00 grep php-fpm

发现进程 535 仍然存在

那么,问题来了, kill -0 [pid] 到底做什么用呢?

答案就是

kill -0 pid 不发送任何信号,但是系统会进行错误检查。

我们可以用来检查一个进程是否存在,存在则 echo $? 返回 0 , 不存在返回 1

当然了,各个系统有自己的稍微差异,比如苹果电脑的

存在则什么都不返回

kill -0 536

不存在则

kill -0 99222
-bash: kill: (99222) - No such process
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.