与えられた時間間隔内にランダムにコマンドを実行するには?

与えられた時間間隔内にランダムにコマンドを実行するには?

私が興味を持っているのは、与えられた時間間隔でUnixコマンドをランダムに実行することです。

たとえば、コマンドがあり、私の時間間隔が正午から午後2時までの場合、正午から午後2時の間にランダムに一度バックグラウンドで実行されるlsバックグラウンドプロセスを開始するにはどうすればよいですか?ls

答え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秒(2時間)の任意の間隔で眠ることができます。

したがって、毎日正午にコマンドを実行するcrontab行は次のようになります。

* 12 * * * command.sh

次に、次のコマンドを使用して command.sh を起動します。

sleep $(( RANDOM % (120*60) ))

別の方法は次のとおりです。

at noon + $(( RANDOM % 120 )) minutes tomorrow

毎日のスクリプトの始まりです。言うまでもなく、後者は時間が経つと失敗するしかないので、最善のアイデアではありません。

関連情報