合上盖子时不要中断睡眠命令

合上盖子时不要中断睡眠命令

我习惯使用以下方法快速设置一些提醒:

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

(下列的这个 ask-ubuntu 答案

现在我的睡眠命令可以按我的意愿工作了。但我觉得完全禁用暂停功能是一种太过激进修复和一个过度杀伤

有没有更简单的解决方案?我只希望sleep当我合上盖子时我的命令不会被打断。

答案1

无意冒犯,但我们这里可能有一个 XY 问题。你认为你的解决方案真实的问题在于sleep可能有误。sleep检查直到指定的时间过去,并且当计算机进入睡眠状态时该时间停止。

相反,考虑使用at命令来安排特定作业在特定时间执行。

at工作原理如下:

echo "command_to_be_run" | at +30 minutes

将在 30 分钟后安排一项工作。

at与 非常相似cron,但作业只运行一次。默认情况下不安装,但可以使用 进行安装sudo apt install at

相关内容