1 通过crontab命令设置任务周期为:1分钟, 即1分钟调用该监控脚本一次。
crontab -e
* * * * * sh /home/task/monitor.sh
2 进程监控脚本 monitor.sh
#! /bin/sh
proc_name="8002" # 进程名或端口号
file_name="/home/task/log/cron.log" # 日志文件
pid=0
proc_num() # 计算进程数
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
return $num
}
proc_id() # 进程号
{
pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
}
proc_num
number=$?
if [ $number -eq 0 ] # 判断进程是否存在
then
cd /home/task/
python manage.py runserver 0.0.0.0:8002 # 重启进程的命令,请相应修改
proc_id # 获取新进程号
echo ${pid}, `date` >> $file_name # 将新进程号和重启时间记录
fi
3 测试
(1)查询进程,获取pid
ps -ef | grep 8002| grep -v grep
(2)干掉进程
kill -9 pid
(3)查询进程,看1分钟后进程是否重启
ps -ef | grep 8002| grep -v grep
或者
ps aux | grep 8002| grep -v grep
4 延伸阅读
(1)crontab 命令
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
(2)ps 命令
http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html
(3)grep 命令
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html
(4)wc 命令
http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html
(5)awk 命令
http://www.runoob.com/linux/linux-comm-awk.html
(6)其它
http://zhidao.baidu.com/question/130215468.html
http://www.cnblogs.com/ZhangShuo/articles/1829589.html
http://zhidao.baidu.com/link?url=-yxSah2j_gq56tKENUTmwP_pQAclfE3ij6ST6jSB_VaPFIU1PHouBckBvOYnSVrtkVDX3wErDTU1aEUDy0KdY_
参考文献:
http://blog.csdn.net/liumangxiong/article/details/7084637
原文中任务周期的设置:每小时的第1分钟 调用进程监控脚本, 即任务周期为1小时,而不是一分钟;
由于原页面无法正常登陆,无法向原作者提出该修改信息,且本人需设计一种监控端口的脚本,故重写此文。