由于最近要负责一个项目的维护工作,这个服务器总是出现段错误,由于时间比较紧张,我就写了一个简单的重启脚本,先让服务器不至于总是dump掉。
废话不多说,先上代码:
#!/bin/shCheckProcess(){if [ "$1" = "" ];then return 1fiPROCESS_NUM=$(ps -ef|grep "$1"|grep -v "grep"|wc -l)if [ "$PROCESS_NUM" = "1" ]; # test not workthenreturn 0elsereturn 1fi}while [ 1 ]; doCheckProcess "./test"CheckQQ_RET=$?if [ "$CheckQQ_RET" = "0" ];thenkillall -9 testexec ./test &echo "restart test again!"fisleep 1done
脚本比较简单,主要参考了/viewarticle.php?id=20338。
shell脚本对程序的格式要求相当严格,这个在编程的过程中要特别注意。
另外,
1. PROCESS_NUM=$(...) 也可以用PROCESS_NUM=' ... ' ;
2.判断条件中的"$CheckQQ_RET" = "1" 也可以改成 $CheckQQ_RET -eq 1。
由于初学shell,花了一下午时间把这个程序调通了,服务器总算能跑起来了,呵呵。
除此之外,为了实现同步,有的时候需要定时重启程序。下面给出的一段代码能实现两个功能:
1. 程序崩溃了,重启;
2. 半小时自动重启程序。
#!/bin/shexec ./test&while [ 1 ]; doPROCESS_NUM=$(ps ax|grep test | grep -v "gedit" | grep -v " grep" | wc -l)if [ "$PROCESS_NUM" = "0" ]thenkillall -9 testexec ./test&fi$a=$($a+10)if ["$a" = "1800"];thena=0killall -9 testexec ./test&fisleep 10done