查看linux查看进程是否存在


本文摘自PHP中文网,作者(*-*)浩,侵删。

这个问题看起来好像很简单,"ps -ef | grep xx"一下就行啦!这样做当然可以,但是如果我们考究起性能来,这恐怕不是个好办法。

假设我们现在要监测某进程是否存活,每分钟检查一次,用上面的办法就要每分钟运行一次ps命令并且做一次grep正则查找。

这点开销在服务器上似乎不算什么,然而如果我们要在同一节点上同时监测数十个、数百个这样的进程又如何呢?(推荐学习:linux教程)

所以,我们有必要从性能的角度出发,发掘一些更好的办法。

对于daemon进程,通常都会有自己的pid或者lock文件,我们可以检查这些文件是否存在来判断进程是否存在。然而有些异常情况下,pid文件存在进程却并不存在。因此并不能依赖进程的pid文件来检测进程是否存活。

一种可靠的方法是使用"kill -0 pid",kill -0不会向进程发送任何信号,但是会进行错误检查。如果进程存在,命令返回0,如果不存在返回1。

1

2

3

4

5

6

7

8

9

10

[sw@gentoo ~]$ ps

  PID TTY          TIME CMD

pts/0    00:00:00 bash

pts/0    00:00:00 ps

[sw@gentoo ~]$ kill -0 15091

[sw@gentoo ~]$ echo $?

[sw@gentoo ~]$ kill -0 15092

-bash: kill: (15092) - No such process

[sw@gentoo ~]$ echo $?

[sw@gentoo ~]$

但是,这种方法对于普通用户来说只能用于检查自己的进程,因为向其它用户的进程发送信号会因为没有权限而出错,返回值也是1。

1

2

3

4

[sw@gentoo ~]$ kill 2993

-bash: kill: (2993) - Operation not permitted

[sw@gentoo ~]$ echo $?

[sw@gentoo ~]$

当然,如果你用特权用户执行kill命令的话,就没有权限问题啦。

以上就是查看linux查看进程是否存在的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Linux怎么解压tar.gz

ros系统和Linux的区别是什么

Linux操作系统下如何卸载云盘和卸载云盘的注意事项

如何使用阿里云迁云工具进行磁盘缩容

解决Linux下mysql密码错误的问题

Linux中cp命令如何复制文件

安装Linux系统时怎么分区合适

如何将一个原安全组里的规则全部或部分地还原为目标安全组规则

Linux如何安装memcached服务方法

Linux网络不可达

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...