2011-05-26 197 views
0

我需要一個script1,它會在一天的隨機時間內執行script2。 我期望在隨機時間內每天執行30次script2。 script1將在cron作業中設置。 有人可以幫助如何使它發生? PS我不是一個程序員,所以需要的東西準備好了,請random cron作業

+1

你能說說目的嗎?有可能更好的解決方案.... – deceze 2011-05-26 04:45:17

+0

這就是我需要的。我需要每天隨機運行一次php腳本,大約30次。 – Henry 2011-05-26 04:49:22

+0

你想要*的行爲*,就像它每天隨機運行30次。其實*隨機運行*可能不是最好的解決方案。另外,它究竟需要多少隨機?在不同的時間每天30次?在任意時間平均30次? – deceze 2011-05-26 04:55:15

回答

2
* * * * * script1.sh 

#!/bin/bash 
if [ $(($RANDOM*100/32768)) -gt 2 ]; then exit; fi 
exec php script2.php 
+0

所以,我應該保存部分開始#!/ bin/bash作爲script1.sh?另外,我如何調整時間的隨機性?什麼是32768?原諒noob。 – Henry 2011-05-26 04:57:12

+0

@Henry:$ RANDOM會生成一個介於0到32767之間的隨機數。30 [executions/day] /(60 * 24)[minutes/day] == .02 [每分鐘執行次數]或2% 。是的,將以#!/ bin/bash開頭的行保存爲文件名script1.sh,並將上面的行放在crontab中。 – 2011-05-26 05:02:57

+0

Seth,在你的回答中說32768和評論32767,這是哪一個?我得到你如何得到百分比的機會,但我仍然不明白你爲什麼選擇32768?爲什麼不是30000? – Henry 2011-05-26 05:14:08

4

Seth的解決方案肯定的作品,但每天執行的次數將有所不同。如果你想肯定30個處決,而不是更多,而不是更少,我建議使用cron項類似

0 0 * * * gen-executions.sh 

和腳本gen-executions.sh

#!/bin/bash 
for number in $(seq 30) 
do 
    hour=$((${RANDOM}*24/32768)) 
    minute=$((${RANDOM}*60/32768)) 
    at -f /path/to/script.sh $(printf "%02d" ${hour}):$(printf "%02d" ${minute}) 
done 

這產生整整30個在隨機時間的/path/to/script.sh處決在那天使用。