私が興味を持っているのは、与えられた時間間隔で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
毎日のスクリプトの始まりです。言うまでもなく、後者は時間が経つと失敗するしかないので、最善のアイデアではありません。