有没有办法让我的 Ubuntu PC 始终在特定时间睡眠和唤醒?

Jo-*_*-El 9 bash suspend hibernate 22.04

我基本上想让我的电脑永远处于睡眠状态并在指定时间醒来。通过研究,我确实发现了这一点,rtcwake但据我所知,这基本上是一次性使用,我每天都必须手动执行。我只是在寻找自动工作的东西,我只是不知道如何使用 bash 来强制 rtcwake 命令(如果这有任何意义的话)。

除了想要自动睡眠之外,我还遇到了 rtcwake 在使用“disk”选项时无论如何都无法工作的问题,因为它会抛出错误:

 rtcwake: unrecognised suspend state 'disk'
Run Code Online (Sandbox Code Playgroud)

Rin*_*ind 13

要暂停/休眠,您可以使用

systemctl suspend
systemctl hibernate
Run Code Online (Sandbox Code Playgroud)

将其设置/etc/crontab为您希望发生这种情况的时间。

1 0 * * * root /usr/bin/systemctl hibernate
Run Code Online (Sandbox Code Playgroud)

要唤醒系统,您可以使用rtcwake. 在下午 4 点/16:00 唤醒系统的示例:

sudo rtcwake -m no -l -t "$(date -d 'today 16:00:00' '+\%s')"
Run Code Online (Sandbox Code Playgroud)

您也可以将其/etc/crontab用作@reboot触发器。

@reboot root /usr/bin/rtcwake -m no -l -t "$(/usr/bin/date -d 'today 16:00:00' '+\%s')"
Run Code Online (Sandbox Code Playgroud)

您可以将两者结合起来,那就是:

0 23 * * *  root /usr/bin/rtcwake -m disk -s 60*60*12
Run Code Online (Sandbox Code Playgroud)

所以在 23:00 它将挂起并在 60 * 60 * 12 秒(12 小时)后唤醒。

请注意,可能存在冲突:如果系统正忙于执行某些操作,它将停止该操作并继续挂起。还有一些工具在有活动时不会暂停,例如autosuspend sudo apt install autosuspend