1、命令
命令 | 说明 |
---|---|
ps aux | grep 进程名 | grep -v grep | 进程存在则输出信息,不存在则没输出 |
ps -ef | grep 进程名 | grep -v grep | wc -l | 进程存在则输出行数(也就是数量),不存在则输出0 |
其中以上两者输出的不同是由于后者加上了wc命令用于计算,这里-l计算行数。除此之外,ps的参数aux和-ef的区别就在于显示进程的风格(aux是BSD风格,而-ef是System V风格)和信息不同(COMMADN列如果过长,aux会截断,而-ef不会),但如果我们只是用来查看程序是否在运行则无所谓,两者效果一样。
解析:
|
表示管道,左端写入,右端读出;
grep
为搜索命令,-v
表示反向查询,grep -v grep表示去除包含grep的项;
wc -l
表示显示行数;
ps
及以下参数查看进程信息:
-e:显示所有进程
-f:全格式
-a:显示终端上的所有进程,包括其他用户的进程
-u:以用户为主的格式来显示程序状况
-x:显示所有程序,不以终端来区分
参考文章:ps -ef 和 ps aux 的区别
2、运用示例
根据前面命令我们可以用在脚本里面进行一系列的自动化操作,比如以下参考例子:
#!/bin/sh
while true
do
# 方式 1
process=`ps aux | grep 进程名 | grep -v grep`;
if [ "$process" == "" ];then
echo not running
else
echo running
fi
# 方式 2
processNum=`ps -fe | grep 进程名 | grep -v grep | wc -l`
if [ $processNum -eq 0 ];then
echo not running
else
echo running
fi
sleep 10
done