该脚本适应与ps命令支持差的平台
由于每个进程启动命令不同,所以不推荐使用脚本传参加遍历的方式实现,所以本文使用每个进程单独判断。
#! /bin/sh
# 进程名
proc_name1="/usr/local/proc1"
proc_name2="/usr/local/proc2"
# 日志文件
file_name="/usr/local/monitor.log"
#参数定义
pid=0
is_exist=0
# 通过返回值判断进程当前是否正常运行
proc_num()
{
# -w显示参数 过滤进程 过滤这条命令 获取显示的条数(不了解可百度或谷歌搜索wc命令)
is_exist=`ps -w | grep $1 | grep -v grep | wc -l`
#也可is_exist=`ps -w | grep $1 | grep -v grep -c`
}
# 获取进程的进程号
proc_id()
{
# -w显示参数 过滤进程 过滤这条命令 返回打印的内容(不了解可百度或谷歌搜索awk命令)
#
pid=`ps -w | grep $1 | grep -v grep | awk '{print $1}'`
}
proc_num $proc_name1
# 判断进程是否存在
if [ $is_exist -eq 0 ]
then
# 重启进程的命令,根据自己的进程修改
$proc_name1 &
# 获取新进程号
proc_id $proc_name1
#添加异常启动记录
echo ${pid} ${proc_name1}, `date` >> $file_name
fi
proc_num $proc_name2
if [ $is_exist -eq 0 ]
then
$proc_name2 &
proc_id $proc_name2
echo ${pid} ${proc_name2}, `date` >> $file_name
fi