
我有快速設定一些提醒的習慣:
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"
不匹配。但是,如果蓋子沒有關閉,那麼它們就會匹配!
因此,為了快速修復,我禁用了關閉蓋子的暫停:
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
.