linux进程监控与自动重启的简单实现方法
目的:
linux下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。
实现原理:
由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。
crontab修改
#crontab-e */5****/mnt/bindmonitor.sh
/mnt/bindmonitor.sh的实现
#!/bin/sh
host_dir=`echo~`#当前用户根目录
proc_name="/home/wkubuntu/named/sbin/named"#进程名
file_name="/mnt/bindmonitor.log"#日志文件
pid=0
proc_num()#计算进程数
{
num=`ps-ef|grep$proc_name|grep-vgrep|wc-l`
return$num
}
proc_id()#进程号
{
pid=`ps-ef|grep$proc_name|grep-vgrep|awk'{print$2}'`
}
proc_num
number=$?
if[$number-eq0]#判断进程是否存在
then
/home/wkubuntu/named/sbin/named-c/home/wkubuntu/named/etc/named.conf-n1&
#重启进程的命令,请相应修改
proc_id#获取新进程号
echo${pid},`date`>>$file_name#将新进程号和重启时间记录
fi
删除进程测试
a.#killall-15named
b.5分钟后,cat/mnt/bindmonitor.log看看有无最新的记录,进程号与#ps-ef|grepnamed进程号对应。