任何人都可以給我腳本來作爲「睡眠整個星期的工作」作爲shell命令。用於睡眠1周的shell腳本
在每次運行睡覺之前,它應該計算下一週的日期和時間。
我找到了這是
startTime=$(date +%s)
endTime=$(date -d "next week" +%s)
timeToWait=$(($endTime- $startTime)) sleep $timeToWait
任何人都可以給我腳本來作爲「睡眠整個星期的工作」作爲shell命令。用於睡眠1周的shell腳本
在每次運行睡覺之前,它應該計算下一週的日期和時間。
我找到了這是
startTime=$(date +%s)
endTime=$(date -d "next week" +%s)
timeToWait=$(($endTime- $startTime)) sleep $timeToWait
coreutils
sleep
支持d
後綴所以有點有用:
sleep 7d
會睡7天。
date -d "next week"
是一種不同的方式來表達
date -d "7 days"
這意味着「由七天現在」,這是不下一週的開始,它也可能不是你想要的。如果是你想要什麼,你正在使用GNU sleep
,你可以發出此命令:
sleep 7d
有你的腳本睡了七天。如果你不使用GNU的睡眠,那麼你將有七天的時間間隔轉換成秒:
sleep 604800
如果你想開始下一週的,那麼這可能在ksh
有所幫助,或即使在bash
:
let time=`date -d "next monday" +%s`-`date +%s`
sleep $time
這就是說,我認爲你使用這個工作是錯誤的工具。有一個腳本sleep
七天是非常不切實際的 - 從系統重啓到shell進程被殺死的同時,可能會發生許多事情。
我警告過一次長時間的等待,我不會在1周的等待時間內完成這個任務。 但是我用的這個變化過去:
waittime=
interval=
: ${waittime:?specify wait time in seconds}
: ${interval:?specify interval in seconds}
t0=SECONDS
target=$((t0 + waittime))
until
((SECONDS > target))
do
sleep $interval
done
我可以問你爲什麼需要1周的睡眠?
我問,因爲如果你想要一個進程等待一個星期,然後重試/做某件事,cron工作可能會更好。有2個原因 - >
1)節約資源
2)如果由於某種原因,你的系統必須重新啓動/停機 - 你的shell腳本將會停止,無論你在等待不會發生。
雖然cron作業將在您希望運行的時候正好運行,從而避免出現這種情況。一些有用的例子是在下面的鏈接
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
我瞭解到這一點,因爲我經歷過它自己! :)
感謝man ....提供cron作業 – user1403174 2012-09-07 14:06:01
哪部分不是有用的?換句話說,什麼不適合你? – rene 2012-08-06 07:23:29
calculatinf下週 – user1403174 2012-08-06 07:24:31
睡1周或睡覺,直到下週開始? – 2012-08-06 07:24:52