如何在给定的时间间隔内随机执行命令?

如何在给定的时间间隔内随机执行命令?

我感兴趣的是在给定的时间间隔内随机运行一次 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

每天脚本的开头。不用说,后者并不是最好的想法,因为随着时间的推移它必然会失败。

相关内容