OpenWrt 定期检测进程是否存在并重启

校园网的拨号客户端用的是师兄写的 c3h,周日至四每天晚上十二点断网之后程序会进行一次重连,但是交换机会无响应,然后程序就会退出(写成不退出也不是不行,只是大半夜的你没事往交换机那边一直发起认证请求是件很奇怪的事情啊),等到了第二天早上七点程序就需要重新启动。之前用的方法是设置个定时任务,每天早上7:10 reboot 一下路由器,但是这样软重启会造成极路由 1S 重启之后总内存只能识别到 20MB 左右(而断电重启是能正确识别到 128MB 的内存的),这样无线就很容易崩,因此现在写了个 shell 脚本,用来代替之前的 reboot,定期每天早上检测一下 c3h 挂掉没有,如果没有挂掉了就重新启动一个。

脚本很简单,就下面几行:

#!/bin/sh

# c3h 为要检测的进程
process=`ps | grep c3h`;
  
if [ "$process" == "" ]; then
    # 重启进程
    /usr/bin/c3h 学号 密码 eth0.2 &
    echo "C3H restarted";
else
    echo "C3H process exsits";
fi

保存之后(我保存在/usr/bin下,文件名为restart-c3h)给它运行权限:

chmod +x /usr/bin/restart-c3h

然后把定时任务那里加一条,让这个脚本在 星期一至五 早上 7:10 启动一次:

10 7 * * 1-5 /usr/bin/restart-c3h

标签:linux, openwrt

添加新评论