特定の時間/日付までスリープする 質問する

特定の時間/日付までスリープする 質問する

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

coreutilsmacOS / OS Xは秒未満の精度をサポートしていないので、代わりにfromを使用する必要がありますbrewこちらの手順をご覧ください

おすすめ記事