求一个启动程序的脚本!
#!/bin/sh
if ps -ef|grep 'type'|grep -v grep;then
echo "successful"
else
cd /opt/sj
nohup ./type >/dev/null &
fi
//*******************************************
#!/bin/sh
st=ccr0
sr=grep
isrun='ps -ef|grep ${st}|grep -v ${sr}'
if [ -z $isrun ]
then
echo "start program!"
cd /opt/sj
nohup ./type >/dev/null &
else
echo "no strart!"
fi
上面两端脚本有问题吗?指教!thanks
问题点数:20、回复次数:7Top
1 楼fierygnu(va_list)回复于 2006-03-19 00:25:40 得分 20
碰到什么问题?Top
2 楼sunjun240(小帅猪)回复于 2006-03-21 16:05:29 得分 0
第一个是好的,但是第二个执行出错!
./auto1.sh: line 5: [: too many arguments
不知道错在那里?Top
3 楼fierygnu(va_list)回复于 2006-03-21 16:14:48 得分 0
两个问题:
1、isrun='ps -ef|grep ${st}|grep -v ${sr}'应该用反引号
isrun=`ps -ef|grep ${st}|grep -v ${sr}`
2、if [ -z $isrun ]要用if [ -z "$isrun" ]Top
4 楼sunjun240(小帅猪)回复于 2006-03-21 17:56:24 得分 0
成功了!非常感谢!
//********************
经过我的观察发现,malloc 1G以上的内存不是每次都能成功!问题的关键是crontab调用shell脚本也启动不了程序!但此时手工运行脚本是能启动程序的!这就奇怪了,开始是怀疑脚本有bug或是crontab根本没有执行(按理说不会,这段脚本我一直在用),后一一试验此段脚本都正常!一直找不到问题的原因!
在写这信前又碰到这样的问题:程序malloc失败退出了,但脚本每1min执行一次,脚本始终执行(echo "successful" > /opt/sj/ccr1/nodo.out)这句!但我手工执行./auto.sh后,程序正常启动了!奇怪!!!昏
【附件1】crontab :*/1 * * * * /opt/sj/ccr1/auto.sh
【附件2】[wise@localhost ccr1]$ tail auto.sh
#!/bin/sh
if ps -ef|grep 'ccr1'|grep -v grep;then
echo "successful" > /opt/sj/ccr1/nodo.out
else
cd /opt/sj/ccr1
nohup ./ccr1 >/dev/null &
echo "do" > /opt/sj/ccr1/do.out
fi
后来我发现是当前路径的名字和要执行文件名冲突,但why?是什么原因了?why手工启动的脚本可以调动程序了?(./auto.sh)
Top
5 楼sunjun240(小帅猪)回复于 2006-03-21 18:04:42 得分 0
前两天发现这个问题!问题的出在哪是找到了(当前路径的名字和要执行文件名冲突),但why,就不知道了!
一旦我将源码编译成其他的名字(非ccr1),一却正常!
想知道是什么原因?谢谢!Top
6 楼fierygnu(va_list)回复于 2006-03-21 18:10:33 得分 0
cron执行的是/opt/sj/ccr1/auto.sh,手工执行是./auto.sh,ps -ef给出的是全路径名,所以cron误判。Top
7 楼sunjun240(小帅猪)回复于 2006-03-21 18:46:33 得分 0
感叹中...
非常感谢!Top




