分类: 嵌入式
2015-04-24 18:02:53
目的:linux 下服务器程序会因为各种原因dump掉,为确保项目中用到的snmpd进程稳定运行,通过crond服务简单实现的进程监控和重启功能。
实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。
在嵌入式平台上首次执行时经常会碰到这种错误:
crontab: chdir(/var/spool/cron/crontabs): No such file or directory
(1)创建上述目录
#mkdir -p /var/spool/cron/crontabs
(2)crontabs编辑要执行的任务:
#crontabs -e
*/5 * * * * /home/resnmpd.sh >/dev/null 2>&1 每隔5分钟执行resnmpd.sh,不打印任何信息
----关于的使用方法参考百度百科
(3)执行busybox crond命令
#busybox crond
此时/var/spool/cron/crontabs下有一个跟用户名相同的文件,保存着要执行的任务。
由于var目录下的内容实际为内存虚拟的,并不存在与flash之中,重启后消失。为保证系统每次启动自动执行,需执行以下步骤:
首先在开发板/etc/crontabs/下建立crontab的配置文件root:
*/5 * * * * /home/resnmpd.sh >/dev/null 2>&1 //每5分钟执行resnmpd.sh脚本一次
然后在/etc/init.d/rcS修改,让开发板每次启动之后自动执行:
mkdir -p /var/spool/cron/crontabs
cp -p /etc/crontabs/root /var/spool/cron/crontabs
chmod 777 /var/spool/cron/crontabs/root
busybox crond
echo "cp cron config file to /var/spool/cron/crontabs"
即新建crontab配置文件目录,然后将配置文件按拷贝至新建目录下,一定要执行chmod命令,以后只需要修改root中的内容就可以改变crontab配置,不过临时修改配置还是需要去/var/spool/cron/crontabs内的root文件,永久修改是改/etc/crontabs/root,重启生效。
2. 简单实现进程监控与重启脚本