linux-守护进程_自重启
用于自动重启被系统杀掉的进程(net_speeder老是被杀,所以就有了这个东西)
auto_net_speeder.sh 脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67#!/bin/bash
CMD="/usr/local/net_speeder/net_speeder venet0 \"ip\" >/dev/null 2>&1 &"
PID="./net_speeder_log/PID.txt"
LOG="./net_speeder_log/mypgm.log"
DEBUG="false"
# ---------------------------------------------------
# 启动函数
function start {
$CMD
mypgmpid=$!
echo $mypgmpid > $PID
echo "start [ok]"
}
# 停止函数
function stop {
kill `cat $PID`
rm $PID
echo "stop [ok]"
}
# --------------------------------------------------
echo "$CMD $1"
case "$1" in
start)
start
;;
start_debug)
DEBUG="true"
start
;;
restart)
if [ -f $PID ] ; then
stop
sleep 4
fi
start
;;
stop)
stop
exit 0
;;
esac
for (( c=0 ; ; c++ ))
do
if [ -f $PID ] ; then
mypgmpid=`cat $PID`
cmdex="ps uh -p$mypgmpid"
psrtn=`$cmdex`
if [ -z "$psrtn" ]; then
# 进程挂掉自动重启
echo "`date '+%Y/%m/%d %H:%M:%S'` FATALERROR RESTART SERVICE" >> $LOG
start
elif (( $c%20 == 0 )); then
# 记录进程运行状态
echo "`date '+%Y/%m/%d %H:%M:%S'` PSINFO $psrtn" >> $LOG
c=0
fi
sleep 3
else
break
fi
done
启动:./auto_net_speeder.sh start &
debug 启动 : ./auto_net_speeder.sh start_debug &
重启:./auto_net_speeder.sh restart &
停止:./auto_net_speeder.sh stop
另外,此脚本只是示例,提供一个思路。到你正在用的时候,需要按照自己需求修改