当前位置: 技术问答>linux和unix
如何根据进程名字来查看状态
来源: 互联网 发布时间:2015-12-11
本文导语: 我在程序中需要根据进程名字来判断一个进程是否已经存在,如不存在就用system来启动,例如在进程1中用"ps -e|grep 进程2"来查看进程2是否存活,,而在进程2中用"ps -e|grep 进程1"判断进程1是否存活,在运行...
我在程序中需要根据进程名字来判断一个进程是否已经存在,如不存在就用system来启动,例如在进程1中用"ps -e|grep 进程2"来查看进程2是否存活,,而在进程2中用"ps -e|grep 进程1"判断进程1是否存活,在运行期间总是出现进程1启动后出现“grep断开的管道"错误,有哪位指点一下是什么原因,另外如果不用 |grep管道的话,如何实现根据名字判断进程是否存活,不用管同名称的多个进程。
|
使用killall命令
比如:
killall -0 ProcessName
-0的意思就是什么也不干,目的就是为了测试指定的进程是否存在。
如果给一个不存在的进程发信号返回非0
可以通过命令行查看killall的返回值:
[root@melon zhanghua]# killall -0 a.out
[root@melon zhanghua]# echo $?
0
[root@melon zhanghua]# killall -0 a.out-ttt
a.out-ttt: no process killed
[root@melon zhanghua]# echo $?
1
第一次a.out进程存在echo $?返回0
第二次a.out-ttt不存在echo $?返回1
比如:
killall -0 ProcessName
-0的意思就是什么也不干,目的就是为了测试指定的进程是否存在。
如果给一个不存在的进程发信号返回非0
可以通过命令行查看killall的返回值:
[root@melon zhanghua]# killall -0 a.out
[root@melon zhanghua]# echo $?
0
[root@melon zhanghua]# killall -0 a.out-ttt
a.out-ttt: no process killed
[root@melon zhanghua]# echo $?
1
第一次a.out进程存在echo $?返回0
第二次a.out-ttt不存在echo $?返回1
|
所有的进程在
/proc/ 下面都有进程号文件,可以查看那里的内容。
而且守护精灵都会有*.pid文件的。也有一些有用的信息。
/proc/ 下面都有进程号文件,可以查看那里的内容。
而且守护精灵都会有*.pid文件的。也有一些有用的信息。