当前位置: 技术问答>linux和unix
请帮我看看以下这段sh脚本在何种情况下会退出。
来源: 互联网 发布时间:2015-06-28
本文导语: 这个脚本是为了程序异常退出的时候让它自动重启: 1 #!/bin/sh 2 # remove old file. 3 if [ -f PenetratorRepeatTmpFile ]; then 4 rm PenetratorRepeatTmpFile; 5 fi 6 ...
这个脚本是为了程序异常退出的时候让它自动重启:
1 #!/bin/sh
2 # remove old file.
3 if [ -f PenetratorRepeatTmpFile ]; then
4 rm PenetratorRepeatTmpFile;
5 fi
6
7 # value
8 EXEFILE=bin/PenetratorRepeat
9 LOGFILE=log/latest
10 LOGLEVEL=LOG_DEBUG
11 CFGFILE=etc/suzhou.xml
12 SULFILE=PenetratorStartUpLog
13
14 # monitor circle
15 while [ -f $EXEFILE ]
16 do
17 #look
18 ps x | awk '{ print $1,$2,$3,$4,$5}' | awk '/PenetratorRepeat/ { print $5 }' > Penet
ratorRepeatTmpFile
19
20 #cat PenetratorRepeatTmpFile >>SULFILE
21
22 if [ -s PenetratorRepeatTmpFile ]; then
23 #echo "aa exists. remove it."
24
25 rm PenetratorRepeatTmpFile;
26 else
27 echo "starting Penetrator..." >>$SULFILE;
28 date >>$SULFILE
29
30 $EXEFILE -f $LOGFILE -v $LOGLEVEL -c $CFGFILE
31
32 ulimit -c unlimited;
33 fi
34
35 sleep 15;
36 done
37
38 echo "executable file PenetratorRepeat does not exist. quit."
注:作为主程序的 EXEFILE=bin/PenetratorRepeat 一直正常存在
开始时正常运行,ps x命令能看到sh脚本运行,但是过了几天再ps x发现脚本项不存在了,也就是退出来了。
按道理说应该是只要主程序还在硬盘上,那么脚本就应该一直执行循环操作啊。。。想不通为什么在没有down机,可执行程序也没有删除的情况下脚本退出来了。
1 #!/bin/sh
2 # remove old file.
3 if [ -f PenetratorRepeatTmpFile ]; then
4 rm PenetratorRepeatTmpFile;
5 fi
6
7 # value
8 EXEFILE=bin/PenetratorRepeat
9 LOGFILE=log/latest
10 LOGLEVEL=LOG_DEBUG
11 CFGFILE=etc/suzhou.xml
12 SULFILE=PenetratorStartUpLog
13
14 # monitor circle
15 while [ -f $EXEFILE ]
16 do
17 #look
18 ps x | awk '{ print $1,$2,$3,$4,$5}' | awk '/PenetratorRepeat/ { print $5 }' > Penet
ratorRepeatTmpFile
19
20 #cat PenetratorRepeatTmpFile >>SULFILE
21
22 if [ -s PenetratorRepeatTmpFile ]; then
23 #echo "aa exists. remove it."
24
25 rm PenetratorRepeatTmpFile;
26 else
27 echo "starting Penetrator..." >>$SULFILE;
28 date >>$SULFILE
29
30 $EXEFILE -f $LOGFILE -v $LOGLEVEL -c $CFGFILE
31
32 ulimit -c unlimited;
33 fi
34
35 sleep 15;
36 done
37
38 echo "executable file PenetratorRepeat does not exist. quit."
注:作为主程序的 EXEFILE=bin/PenetratorRepeat 一直正常存在
开始时正常运行,ps x命令能看到sh脚本运行,但是过了几天再ps x发现脚本项不存在了,也就是退出来了。
按道理说应该是只要主程序还在硬盘上,那么脚本就应该一直执行循环操作啊。。。想不通为什么在没有down机,可执行程序也没有删除的情况下脚本退出来了。
|
可能是什么信号将脚本终止了,在shell中用trap将信号都屏蔽掉试一试。
|
在脚本的头部加上trap语句就可以了。不过屏蔽不是解决方法,应该把得到的信号记录下来,然后检查其根本原因。