一定期間プログラム(bashスクリプト)を一時停止します。

一定期間プログラム(bashスクリプト)を一時停止します。

特定のbashスクリプトを30分間一時停止したいと思います。これで使用しますsleep 1800が、ラップトップが一時停止(スリープ)状態にある可能性がある時間を考慮しません。これを達成する方法はありますか?

今が午後12時53分なら午前1時23分にプログラムを再開したいと思います。ただし、同時にコンピュータがスリープモードになることもあります。コンピュータが午前1時23分以降まで休止状態になっている場合は、休止状態から再起動してすぐにプログラムを再起動したいと思います。

ベストアンサー1

たぶんループに巻き込まれ、スケジュールされた時間whileにあるかどうかをテストすることもできます。

#!/bin/bash                                 

SOON=$(($(date +%s) + 1800))                                   
while [[ "$NOW" -le "$SOON" ]]; do                         
    sleep 1                            
    NOW=$(date +%s)                                     
done         

日付のアイデアは以下でも見つけることができます。Chepnerの答え。このコマンドは、1970年以降の日付を秒単位で+%sフォーマットしますdate$(( ))超演算を追加するだけです。 1800を任意の数字に置き換えます。 (動作していることを確認するために少量でテストするのが最善です。)sleep 1スクリプトに毎秒条件を確認させます。

おすすめ記事