2011-08-23 99 views
0

我有以下腳本確保每3秒調用一次.php文件。如何在特定時間停止執行.sh腳本?

#!/bin/bash 

for ((i=0; i<43200; i++)) 
do 

/usr/bin/php /var/www/vhosts/mydomain.com/httpdocs/somefile.php 


sleep 3 
done 

我希望能夠停止腳本excecution如果時間是23點58分59秒

任何人都可以幫我嗎?

感謝,卓然

回答

-2

我覺得這是不使用腳本語言如Python和Perl沒有直接的方法。

這裏如果喲想已經有實現TE perl腳本:

http://www.cyberciti.biz/faq/shell-scripting-run-command-under-alarmclock/


利用率摘要:

創建一個文件installTimeout.sh包含以下內容:

wget http://pilcrow.madison.wi.us/sw/doalarm-0.1.7.tgz 
tar -zxvf doalarm-0.1.7.tg 
cd doalarm-0.1.7 
make 

並運行命令:

source installTimeout.sh 

現在它對您來說是透明的。 當你想給一個超時腳本喲只需要運行:

doalarm 20 your script 

最佳, 科技教育

+0

感謝Ste,但所有代碼看起來都像希臘語。我不知道要實現我的目標。 – Zoran

+1

好的...我試着做一個總結,至少你可能會使用它。 – Stefano

+0

他希望你安裝一個單獨的工具,在特定的時間段之後會殺死你的腳本。這是不必要的;你可以運行'cron'作業來在指定的時間殺死另一個腳本,但這是一種暴力方式。另外,如果你不知道你什麼時候開始寫劇本,你怎麼知道你應該超時多久?是的,可以計算時間偏移量,但這是失控的。 – tripleee

2
case `date +%H%M` in 2359) break ;; esac 

編輯:我發現了零填充的日期格式的字符串是不便攜式,所以我把它拿出來了。無論如何,這在這種情況下沒有用或不必要。

+0

嗨tripleee。很少有問題......關閉了,但沒有打開,爲什麼兩個;;和esac是什麼意思? – Zoran

+0

閱讀shell編程的基本介紹,找到'case'關鍵字。是的,如果你是新手,這個語法可能看起來有點陌生。 – tripleee

+0

嗨我現在有以下腳本,它不會停止執行... [code]#!/ bin/bashcase'date +%0H%0M'in 1044)break ;; ESAC 爲((I = 0;我<43200;我++)) 做 的/ usr/bin中/ PHP的/var/www/vhosts/http://www.mysite.com/httpdocs/myfile.php 睡眠3 完成[代碼]和腳本似乎不會停止...繼續調用php文件。我做錯了什麼?任何幫助? – Zoran

0

再次問我。

,因爲你的腳本有沒有開關輸入youmcan嘗試推出侑腳本方式如下:

./yourscript.sh & sleep 10 && kill %1 && fg 

試試看。

Se