bash スクリプトを特定の時間までスリープ状態にしたいです。そのため、間隔は取らずに終了時間を指定して、その時間までスリープ状態になる「sleep」のようなコマンドが必要です。
特定の日付/時刻まで実行中のスクリプトをブロックする必要があるため、「at」デーモンは解決策ではありません。
そんなコマンドあるんですか?
ベストアンサー1
Outlaw Programmer が述べたように、解決策は正しい秒数だけスリープすることだと思います。
これを bash で実行するには、次の手順を実行します。
current_epoch=$(date +%s)
target_epoch=$(date -d '01/01/2010 12:00' +%s)
sleep_seconds=$(( $target_epoch - $current_epoch ))
sleep $sleep_seconds
ナノ秒単位(実質的にはミリ秒単位)までの精度を追加するには、たとえば次の構文を使用します。
current_epoch=$(date +%s.%N)
target_epoch=$(date -d "20:25:00.12345" +%s.%N)
sleep_seconds=$(echo "$target_epoch - $current_epoch"|bc)
sleep $sleep_seconds
coreutils
macOS / OS Xは秒未満の精度をサポートしていないので、代わりにfromを使用する必要がありますbrew
→こちらの手順をご覧ください