web-dev-qa-db-ja.com

正確な秒を指定してコマンド/スクリプトをスケジュールする

Bashを使用していて、後で指定した時間に1秒の精度でコマンド/スクリプトを実行するにはどうすればよいでしょうか。

at-コマンドのマニュアルページを読みましたが、理解できる限り、分を指定することしかできません(秒は指定できません)。今のところ、最初にatを使用し、次にsleepを使用して、正しい秒を実行します。実例を示すために、22.21.05でmy_script.shを実行したい場合は、次のようにします。

echo "sleep 5; my_script.sh" | at 22.21

ただし、コマンドを組み込んだ方がはるかに便利です。at 22.21.05のようなものです。

5

私はこれが可能だとは思わない。 cronは分単位で細かく設定されており、atユーティリティはそれに接続して機能します。実行する前にx秒間スリープするという正しい解決策があると思います。

5
gvkv

あなたはあなたのテクニックを関数にすることができます:

atplus () { local sec=${1##*.} time=${1%.*}; shift; echo "sleep $sec; $@" | at $time; }

やってみて:

atplus 22.21.05 my_script.sh

ただし、精度は保証されませんのでご注意ください。