Shell脚本实例(一) 监控一个程序的运行情况
2017-11-26 16:31
886 查看
一、问题描述:
监控指定程序是否运行,如果程序没有运行,那么启动程序。
二、解决思路:
<1>、我们判断一个程序是否运行,可以通过查看该程序的进程信息来判断。
例: 判断程序 01FirstScript.sh 是否在运行
命令:ps -ef | grep 01FirstScript.sh | grep -v grep
结果分析: 如果命令执行之后有输出,即输出进程信息。则说明程序正在运行
如果执行之后没有输出,则说明程序没有运行
<2>、如何监控指定的程序?
我们可以将指定程序的名字作为监控程序的参数传递进去,在内部实现时,通过死循环来不断监控
<3>、如果程序未运行,如何启动程序?
在判断程序为运行时,如果指定程序名是监控程序的第一个参数。可以通过下面命令启动指定程序
sh $1
三、脚本代码实现:
四、运行结果截图:
六、程序运行过程说明:
<1>、一开始指定程序并未运行
<2>、然后监控进程检测指定程序未运行,随即启动指定程序
<3>、指定程序开始运行
<4>、在中途使用kill命令终止指定程序进程
<5>、监控进程再次检测到指定程序未运行,随即启动指定程序
<6>、指定程序开始运行
监控指定程序是否运行,如果程序没有运行,那么启动程序。
二、解决思路:
<1>、我们判断一个程序是否运行,可以通过查看该程序的进程信息来判断。
例: 判断程序 01FirstScript.sh 是否在运行
命令:ps -ef | grep 01FirstScript.sh | grep -v grep
结果分析: 如果命令执行之后有输出,即输出进程信息。则说明程序正在运行
如果执行之后没有输出,则说明程序没有运行
<2>、如何监控指定的程序?
我们可以将指定程序的名字作为监控程序的参数传递进去,在内部实现时,通过死循环来不断监控
<3>、如果程序未运行,如何启动程序?
在判断程序为运行时,如果指定程序名是监控程序的第一个参数。可以通过下面命令启动指定程序
sh $1
三、脚本代码实现:
#!/bin/bash #进程监控脚本 #功能需求: 监控程序是否运行,如果程序没有运行,那么启动程序。 while [ true ] do pro=$(ps -ef | grep "$1" | grep -v grep | grep -v "$0") #过滤出目标进程信息,如果pro为空串说明目标进程未运行 #反向过滤掉grep进程 和 本进程信息, 因为这两个进程信息中包含目标进程的名字 if [ -z "$pro" ] then echo "程序未启动,重新启动程序" sh $1 #重新启动指定程序 else echo "程序正在运行..." fi sleep 0.5 done
四、运行结果截图:
六、程序运行过程说明:
<1>、一开始指定程序并未运行
<2>、然后监控进程检测指定程序未运行,随即启动指定程序
<3>、指定程序开始运行
<4>、在中途使用kill命令终止指定程序进程
<5>、监控进程再次检测到指定程序未运行,随即启动指定程序
<6>、指定程序开始运行
相关文章推荐
- 一个shell for循环与case结合的脚本(监控程序状态)
- shell脚本只运行一个实例
- 一个shell for循环与case结合的脚本(监控程序状态)
- [shell应用进阶]:限制同时运行脚本实例的个数 -- 串行化:换一个思路。
- 如何确保 Shell 脚本只有一个实例运行
- 通过shell脚本监控tomcat运行情况
- bat脚本实例实现只允许运行一个实例(安装程序、创建快捷方式脚本)
- shell脚本写一个应用监控程序、让程序死而复生
- shell保证一个程序实例在运行
- 一个监控Squid运行进程数并自动重启的简洁Shell脚本分享
- 写了一个简单的shell脚本监控mysql服务器运行状态
- 一个监控Squid运行进程数并自动重启的简洁Shell脚本分享
- 写一个监控网络和应用端口的shell脚本程序
- 如何使Shell脚本只有一个实例在运行
- Linux:shell脚本反复运行同一个程序
- 解决C#程序只允许运行一个实例的几种方法详解
- 让Delphi程序只运行一个实例
- 使用C#实现只允许运行一个程序实例的几种方法
- 确保一个程序只运行一个实例(BCB,Delphi)