我感兴趣的是在给定的时间间隔内随机运行一次 Unix 命令。
例如,如果命令是,ls
并且我的时间间隔是在中午和下午 2 点之间,那么我如何启动一个后台进程,该进程会ls
在中午和下午 2 点之间随机在后台运行一次?
答案1
最简单的方法是使用at
命令。由于 at 允许使用 timespec 你可以像这样使用它:
at 12:00 PM tomorrow + 30 minutes
所以在你的情况下你会想使用这样的东西:
at 12:00 PM tomorrow + $(($RANDOM % 120)) minutes
输入此命令后,您可以键入命令,例如ls
并通过完成ctrl + d
如果您不熟悉 at 命令,请阅读本教程。
答案2
根据您的意图,您可以为中午编写一个 crontab,然后休眠 0 到 120 秒(两个小时)之间的随机间隔。
因此,每天中午运行命令的 crontab 行是:
* 12 * * * command.sh
然后用以下命令启动 command.sh:
sleep $(( RANDOM % (120*60) ))
另一种方法是:
at noon + $(( RANDOM % 120 )) minutes tomorrow
每天脚本的开头。不用说,后者并不是最好的想法,因为随着时间的推移它必然会失败。