
私は次のようなリマインダーをすぐに設定する習慣があります:
sleep $duration; notify-send $reminder_message
しかし、最近は移動が多く、頻繁にデスクを変える必要があり、$reminder_message
予定より遅く到着し始めたことに気付きました。原因は、蓋を閉じると、私のコマンドとともにすべてが一時停止してしまうことでしたsleep
。
私が調べた方法は次のとおりです:
date; echo $duration; date -d "+$duration sec"; sleep "$duration"s; date
上記のコマンドの間に蓋を閉じると、date
とdate -d "+$duration sec"
は一致しません。ただし、蓋が閉じられていない場合は一致します。
そこで、簡単な修正として、次のようにして lid-close によるサスペンドを無効にしました。
HandleLidSwitch=ignore
(続くこのask-ubuntuの回答)
これで、スリープコマンドは期待通りに動作するようになりました。しかし、サスペンドを完全に無効にするのは、攻撃的すぎる修正してやり過ぎ!
sleep
もっと簡単な解決策はありますか?蓋を閉じたときにコマンドが中断されないようにしたいだけです。
答え1
悪気はありませんが、ここにはXY問題があるかもしれません。あなたの本物問題は、sleep
間違っている可能性があるということです。sleep
指定された時間が経過するまでチェックし、コンピューターがスリープ状態になるとその時間が停止します。
代わりに、at
特定のジョブが特定の時間に実行されるようにスケジュールするコマンドを使用することを検討してください。
at
次のように動作します:
echo "command_to_be_run" | at +30 minutes
30 分後にジョブをスケジュールします。
at
は とよく似ていますcron
が、ジョブは 1 回しか実行されません。デフォルトではインストールされませんが、 とともにインストールできますsudo apt install at
。