Linux shell:脚本判断进程是否正在运行

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
  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-QWERT

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值