18,829
社区成员
发帖
与我相关
我的任务
分享
你那样确实可以,但不符合我的需求啊,我的需求是shell脚本开机自动运行,每10秒钟检测一下我的程序(程序名为AcqDataSys)是否僵尸或退出 。如果僵尸或退出,就以当期日期和时间为文件名建立一个日志文件,且写入一条日志到这个日志文件中去,之后如果是僵尸就重启系统,如果是退出了,就重启该程序。但在开机自动运行时,touch、echo都失效,在shell界面单独运行这个脚本,则没问题。
shell脚本如下:
# !/bin/sh
while true
do
# echo "Hello ,dansir!"
currDateTime=`date +%Y%m%d%H%M%S`
prefilename="restartacqdatasys"
extendname=".log"
#logfilename=$prefilename""$currDateTime
logfilename=${prefilename}$currDateTime$extendname
status=`ps | grep 'AcqDataSys' | sed 's/^.*grep.*$//g'| sed 's/^.*[0-9] *//g' | sed 's/ *[/].*$//g'`
zombiestatus1=`ps | grep 'AcqDataSys' | sed 's/^.*grep.*$//g'| sed 's/^.*root//g' | sed 's/ *[[].*$//g' | sed 's/^. *//g'`
zombiestatus2=`ps | grep 'AcqDataSys' | sed 's/^.*grep.*$//g'| sed 's/^.*Z *//g'`
echo $status
echo $zombiestatus1
echo $zombiestatus2
if busybox test $zombiestatus1 = "Z" || busybox test $zombiestatus2 = "[AcqDataSys]"; then
echo "AcqDataSys Zombied,now reboot system!"
touch $logfilename
echo "AcqDataSys Zombied, now reboot system!" > $logfilename
reboot -f
fi
if busybox test -z $status; then
echo "AcqDataSys exit, restart the program!"
touch $logfilename
echo "AcqDataSys exit, restart the program!" > $logfilename
. /etc/profile
/upepri/mptmsu/bin/AcqDataSys -qws &
fi
sleep 10s
done