我已经从夜间骑车服务改为每周一次,但在更新INI之后,我希望服务器能够正确地循环服务。我想我可以使用'at'命令并将它与更新INI文件的命令一起发送。Linux在命令脚本不断重复
问题是这样的,我使用的是我在cronjob中使用的相同命令,而不是像cron一样循环一次,当我使用'at'服务时,每隔一段时间分钟。使用 '在'
#!/bin/bash
export SRVINI=/u01/home/me/scripts/buildini
SERVERLIST=$SRVINI/serverlist.txt
## Generate the body to send out to each server
touch $SRVINI/body.ini
## copying server.ini commented out as Senthil wants a different copy that he will edit
#cp $SRV_DATA/server.ini $SRVINI/
$SRVINI/generate_body.pl
#rm $SRVINI/server.ini
## scp the body of the ini file to each server
for i in `cat $SERVERLIST` ; do
scp $SRVINI/body.ini $i:$SRVINI/
done
## Call outside perl script to manipulate the files
for i in `cat $SERVERLIST` ; do
ssh $i "source ~/.bash_profile ; cd $SRVINI ; $SRVINI/buildini.pl ; at now + 15 minutes <<< '/u01/home/server/scripts/cycleSRVC.sh > /u01/home/server/logs/cycleSRVC.log 2>&1'"
done
rm $SRVINI/body.ini
的cronjob
15 04 * * 6 /u01/home/me/scripts/cycleSRVC.sh >/u01/me/tomax/logs/cycleSRVC.log 2>&1
脚本我用 'ATQ' 和核实,只有一个工作是在每个服务器上创建的。这让我觉得我的脚本通过ssh正确发送。
我知道循环脚本的工作原理,因为它作为cronjob运行时没有问题。
我尝试了不同的方式传递'at'命令,他们都在所有的服务器上创建一个作业,它们都运行,但他们都在几分钟后重新开始循环,我必须手动杀死骑自行车,杀死服务并把他们带回来。
在如何进行损失。目前,当我对INI进行更新时,我会在所有8台服务器上手动循环服务。非常感谢帮助。谢谢。
UPDATE
我注意到,当我做“ATQ”它运行后,它显示为 >atq
22 2014-12-02 22:01 = usr
这是否意味着它只是不断跑跑步?这是否意味着循环脚本有错误,因此它从未完成at命令?如果是这样,为什么它作为一个cronjob?
最后更新:
发现这个问题。它在cycleSRVC.sh脚本中,而不是'at'。 当我的服务正在启动备份我打电话: # Restart services
/u01/app/progs/start.sh
sleep 30
我有一个“&”推start.sh添加到背景。不这样做会让它处于一种奇怪的状态,之后会有睡眠。奇怪的小事让我产生了很多问题。
在此发布此信息可以帮助任何可能有同样挫败感的人。
2014-12-03
bigw8
+0
请将您的解决方案作为答案发布,以便将此问题从“未答复”列表中解决。另见:http://stackoverflow.com/help/self-answer –
2014-12-03 11:29:00
+0
@Ruud谢谢!会做 –
2014-12-04 22:47:04