任何人都可以给我脚本来作为“睡眠整个星期的工作”作为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