Bashを使用していて、後で指定した時間に1秒の精度でコマンド/スクリプトを実行するにはどうすればよいでしょうか。
at
-コマンドのマニュアルページを読みましたが、理解できる限り、分を指定することしかできません(秒は指定できません)。今のところ、最初にat
を使用し、次にsleep
を使用して、正しい秒を実行します。実例を示すために、22.21.05でmy_script.shを実行したい場合は、次のようにします。
echo "sleep 5; my_script.sh" | at 22.21
ただし、コマンドを組み込んだ方がはるかに便利です。at 22.21.05
のようなものです。
私はこれが可能だとは思わない。 cron
は分単位で細かく設定されており、at
ユーティリティはそれに接続して機能します。実行する前にx秒間スリープするという正しい解決策があると思います。
あなたはあなたのテクニックを関数にすることができます:
atplus () { local sec=${1##*.} time=${1%.*}; shift; echo "sleep $sec; $@" | at $time; }
やってみて:
atplus 22.21.05 my_script.sh
ただし、精度は保証されませんのでご注意ください。