我尝试按照以下规则为笔记本电脑的合上盖子提供一种行为:
当盖子关闭时:
- 1m后,应该是锁屏的;
- 10m后应暂停;
- 15m后应关机。
因此,我制作了以下脚本:
#!/bin/bash
USER=fauve
sleep 1m
# set screensaver
su -c "$HOME/.local/bin/screenlock" - $USER
# hibernate
sleep 9m
systemctl suspend
sleep 5m
# shutdown
shutdown 0
但正如您所看到的,shutdown
当笔记本电脑处于暂停状态时,它就永远不会关闭。
那么如何编程暂停或关闭 5 分钟,然后让脚本继续完全关闭计算机?
简而言之:你不能。至少不是在软件中。当您将计算机置于挂起状态时,它会被挂起。诸如
sleep
(或更准确地说,告诉内核在给定时间后唤醒任务的系统棒或计时器)之类的软件根本不会运行。所以,这里只有一个硬件解决方案。您的笔记本电脑需要有一些闹钟才能唤醒,并退出暂停状态!
幸运的是,这是相当标准的。
会这样做。如果您的笔记本电脑支持它。
请注意,我对此表示怀疑。按照您编写脚本的方式,您的笔记本电脑总是在 5 分钟或更长时间后退出挂起状态时直接关闭。我想你想要别的东西。我的猜测是你想检查 5 分钟是否真的过去了,如果没有,假设笔记本电脑是手动退出暂停状态而不是关闭它。在这种情况下,您需要保存预暂停时间,并将其与之后的时间进行比较。
也许你想要
systemctl suspend-then-hibernate
?这似乎是一件很可能的事情。在引擎盖下,它的作用是相同的:依靠 RTC 在某个时间退出挂起,然后将系统状态保存到磁盘并关闭电源,除非之前手动唤醒。