我已經從夜間騎車服務改爲每週一次,但在更新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添加到背景。不這樣做會讓它處於一種奇怪的狀態,之後會有睡眠。奇怪的小事讓我產生了很多問題。
在此發佈此信息可以幫助任何可能有同樣挫敗感的人。
請將您的解決方案作爲答案發布,以便將此問題從「未答覆」列表中解決。另見:http://stackoverflow.com/help/self-answer – 2014-12-03 11:29:00
@Ruud謝謝!會做 – bigw8 2014-12-04 22:47:04