Shell之判断程序是否运行-yellowcong
2017-11-02 14:11
162 查看
在linux中,通过脚本来判断程序是否执行,然后再执行重启或则其他逻辑操作,实现的思路是获取到执行的程序运行的实例个数,如果程序为0 ,那就说明完犊子了,没有启动。PS(注意
我们通过执行
脚本执行,程序的执行数量是3个,是正常运行
执行结果,可以发现
ps -ef和
ps -C两种方法的区别,
ps -C可以准确的查询出这个服务名称的条数,而
ps -ef只能匹配有这个名称的进程)
脚本
在linux中,对于数字的判断是函数有如下几种条件 | 案例 |
---|---|
-eq | n1 -eq n2检查n1是否等于n2 |
-le | n1 -le n2检查n1是否小于等于n2 |
-ge | n1 -ge n2检查n1是否大于等于n2 |
-lt | n1 -lt n2检查n1是否小于n2 |
-gt | n1 -gt n2检查n1是否大于n2 |
-ne | n1 -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的名称,所以必然会被计数的。
相关文章推荐
- shell判断程序/服务是否运行
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动
- 判断程序是否已经运行
- 判断程序是否运行的代码 (有点单例模式的味道)
- 判断程序实例是否已经运行的N种方法
- C# WinForm判断Win7下程序是否以管理员身份运行
- 在VB和VB.NET程序中判断当前是否运行于开发环境中
- 判断程序是否运行在虚拟机里
- 通过UID判断某个程序是否在前台运行(转)
- C# winform 判断程序是否已经在运行 判断程序是否已经打开
- 判断程序是否运行在虚拟机中的代码
- 判断程序是否是以 管理员 身份运行 visual c++
- 判断Android程序是否在后台中运行
- Android判断程序是否第一次运行
- C# WINFORM判断程序是否运行,且只能运行一个实例(转)
- Installshield 在安装或者卸载过程中,判断某一程序是否正在运行
- android 如何判断程序是否在前台运行
- 如何判断程序是否重复运行的几种方法
- Linux Shell判断某程序是否在运行
- Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台