shell:监控进程运行状态并自动重启进程
#!/bin/sh MAXRSTCOUNT=5; PROCTOGO=/mnt/hgfs/code/test/show #count is the counter of test started times count=0 sys_reboot() { echo "system is going to reboot"; reboot; } main_loop() { while : do ######################################### ProStillRunning=$(ps -aux |grep "${PROCTOGO}" |grep -v "grep") if [ -z "$ProStillRunning" ]; then #start test chmod +x ${PROCTOGO} ${PROCTOGO} fi #the running times counter let count=count+1 echo "test running times is $count" #wait for test stoping... sleep 3 ######################################### done } main_loop;
实例:
cat etc/init.d/monitor-app.sh
#!/bin/bash sleep 40 while [ 1 ] do for procname in app do pgrep $procname > /dev/null if [ 0 -ne $? ] then /etc/init.d/autoapp start & ##autoapp可以是脚本,app等 fi done sleep 30 done
一个app启动脚本:
cat etc/init.d/automhclient
#! /bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin case "$1" in start) echo -n "Starting automhclient: " export DISPLAY=:0 cd /usr/share/qt5/app/mhclient ./automhclient & echo exit 0 ;; stop) echo -n "Shutting down automhclient: " killproc automhclient echo ;; restart) echo -n "Restarting automhclient: " $0 stop $0 start echo ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac