Shell之判断程序是否运行-yellowcong

本文介绍如何在Linux系统中使用脚本检查指定程序的状态,并通过不同命令对比,选择更精确的方法来确保程序正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux中,通过脚本来判断程序是否执行,然后再执行重启或则其他逻辑操作,实现的思路是获取到执行的程序运行的实例个数,如果程序为0 ,那就说明完犊子了,没有启动。PS(注意ps -efps -C两种方法的区别,ps -C可以准确的查询出这个服务名称的条数,而ps -ef 只能匹配有这个名称的进程)

脚本

在linux中,对于数字的判断是函数有如下几种

条件案例
-eqn1 -eq n2检查n1是否等于n2
-len1 -le n2检查n1是否小于等于n2
-gen1 -ge n2检查n1是否大于等于n2
-ltn1 -lt n2检查n1是否小于n2
-gtn1 -gt n2检查n1是否大于n2
-nen1 -ne n2检查n1是否不等于n2



我们通过执行ps -ef |grep zookeeper |grep -v "grep" |wc -l命令,查看zookeeper的执行数目,我们也可以把zookeeper换成其他需要检查或则动态传入的程序

这里写图片描述

脚本代码

数字的判断语法,两边是有空格的,不然就会语报错

#!/bin/bash
#ps -ef |grep zookeeper 这个就是看zookeeper的启动情况
#grep -v "grep" 是为了去掉查询 grep的那一条
#wc -l 是计数的

COUNT=$(ps -ef |grep zookeeper |grep -v "grep" |wc -l)
echo $COUNT
if [ $COUNT -eq 0 ]; then
        echo NOT RUN
else
        echo is RUN
fi

这里写图片描述

脚本执行,程序的执行数量是3个,是正常运行
这里写图片描述

ps -C与 ps -ef两种判断程序方法

这是一个简单判断nginx是否启动的程序,可以发现,通过ps ef会查询出比ps -C的条目多,因为ps -C不做匹配操作,所以建议使用 ps -C的方法来检查程序是否执行

#!/bin/bash

#这个第一种判定方式不准确
#ps -ef |grep nginx 查看所有nginx名称相关的服务
#grep -v "grep" 去掉grep查询的那一条
#wc -l 计数
COUNT=$(ps -ef |grep nginx |grep -v "grep" |wc -l)
echo "ps -ef |方法: "$COUNT


#第二种,准确判断pid的信息,
#-C 表示的是nginx完整命令,不带匹配的操作
#--no-header 表示不要表头的数据
#wc -l 表示计数
COUNT=$(ps -C nginx --no-header |wc -l)
echo "ps -c|方法:"$COUNT

#shell 关键字都需要有空格
if [ $COUNT -eq 0 ]
then
        echo no run
else
        echo is run
fi
echo $COUNT

这里写图片描述

执行结果,可以发现ps -ef 可能查询出多条,是因为程序名称 的名称本身就是 check_nginx,带有nginx的名称,所以必然会被计数的。

这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狂飙的yellowcong

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值