合上蓋子時不要中斷睡眠指令

合上蓋子時不要中斷睡眠指令

我有快速設定一些提醒的習慣:

sleep $duration; notify-send $reminder_message

但最近我不得不四處走動,經常更換辦公桌。我注意到我$reminder_message到達的時間比預期晚了。事實證明,罪魁禍首是:當我合上蓋子時,它會根據我的sleep命令暫停所有內容。

我是這樣發現的:

date; echo $duration; date -d "+$duration sec"; sleep "$duration"s; date

如果我在上述命令之間合上蓋子,則:datedate -d "+$duration sec"不匹配。但是,如果蓋子沒有關閉,那麼它們就會匹配!

因此,為了快速修復,我禁用了關閉蓋子的暫停:

HandleLidSwitch=ignore

(下列的這個詢問-ubuntu答案

現在我的睡眠命令按照我想要的方式工作。但我覺得完全禁用暫停是一個太激進修復並矯枉過正

有更簡單的解決方案嗎?我只是希望sleep當我合上蓋子時我的命令不應該被打斷。

答案1

無意冒犯,但我們這裡可能遇到 XY 問題。您的印像是您的解決方案真實的問題是sleep可能是錯誤的。sleep檢查直到指定的時間過去,並且該時間在電腦睡眠時停止。

相反,請考慮使用該at命令來安排特定作業在特定時間發生。

at工作原理如下:

echo "command_to_be_run" | at +30 minutes

將安排 30 分鐘後的工作。

at很像cron,但是一個作業只運行一次。預設不安裝,但可以使用sudo apt install at.

相關內容