2012-08-06 51 views
1

任何人都可以給我腳本來作爲「睡眠整個星期的工作」作爲shell命令。用於睡眠1周的shell腳本

在每次運行睡覺之前,它應該計算下一週的日期和時間。

我找到了這是

startTime=$(date +%s) 

endTime=$(date -d "next week" +%s) 

timeToWait=$(($endTime- $startTime)) sleep $timeToWait 
+0

哪部分不是有用的?換句話說,什麼不適合你? – rene 2012-08-06 07:23:29

+0

calculatinf下週 – user1403174 2012-08-06 07:24:31

+0

睡1周或睡覺,直到下週開始? – 2012-08-06 07:24:52

回答

0

coreutilssleep支持d後綴所以有點有用:

sleep 7d 

會睡7天。

4
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進程被殺死的同時,可能會發生許多事情。

你應該看看crondcrontabatdat,甚至在更現代cron株/補充劑,如frconanacron

0

我警告過一次長時間的等待,我不會在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

我可以問你爲什麼需要1周的睡眠?

我問,因爲如果你想要一個進程等待一個星期,然後重試/做某件事,cron工作可能會更好。有2個原因 - >

1)節約資源

2)如果由於某種原因,你的系統必須重新啓動/停機 - 你的shell腳本將會停止,無論你在等待不會發生。

雖然cron作業將在您希望運行的時候正好運行,從而避免出現這種情況。一些有用的例子是在下面的鏈接

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

我瞭解到這一點,因爲我經歷過它自己! :)

+0

感謝man ....提供cron作業 – user1403174 2012-09-07 14:06:01