从航站楼:

从航站楼:

我一直在寻找解决方案,让我的电脑每天在东部标准时间凌晨 1 点进入睡眠状态,并在东部标准时间下午 6 点唤醒。到目前为止,我还没有成功。

我尝试使用 rtcwake 和 cronjobs 以及此处的脚本:

自动从睡眠/待机/挂起状态恢复 | Ubuntu 论坛

甚至在其他论坛上我也无法让它发挥作用。

非常感谢您的帮助。

附言:我已启用磁盘加密,因此我无法休眠。

答案1

从航站楼:

挂起并在 60 秒后唤醒:

sudo rtcwake -m disk -s 60

今天 16.00 暂停并唤醒

sudo rtcwake -m no -l -t "$(date -d 'today 16:00:00' '+%s')"

暂停并于明天 10.00 唤醒:

sudo rtcwake -m no -l -t $(date +%s -d 'tomorrow 10:00')

暂停和唤醒具体日期和时间:

sudo rtcwake -m no -l -t "$(date -d '2017-04-25 16:00:00' '+%s')"

停机维护使用:

sudo shutdown -P +60 "The system is going DOWN to maintenance mode in 60 minutes!"

sudo shutdown -P 22:10 "The system is going DOWN to maintenance mode at 22:10!"

使用自动关机:

下载自动关机:

wget https://github.com/deragon/autopoweroff/releases/download/3.0.0/autopoweroff-3.0.0-1.noarch.deb

安装自动关机:

sudo dpkg -i autopoweroff-3.0.0-1.noarch.deb
sudo apt-get install -f

自动关机 自动关机2

答案2

您正在遵循的脚本过于复杂。描述了一种更简单的方法这里

在全面实行凌晨 1 点睡觉、早上 6 点起床之前,你可以做一个简单的 10 秒测试:

sudo rtcwake -m mem -s 10 && firefox

此测试将确保挂起到 RAM 确实有效。恢复后将firefox自动启动。

不用摆弄 UTC,让您的rtcwake命令cron在凌晨 1 点调用,并在几秒后唤醒18000。您的 cron 表条目将如下所示:

0 1 * * *  sh /usr/sbin/rtcwake -m mem -s 18000 >> /home/Me/SuspendResume.log 2>&1

由于使用 sudo 权限运行,因此不需要sudo前缀。cron

替换Me为您的用户名。定期检查文件SuspendResume.log中的 cron 消息,并在出现问题时检查。2>&1选项将错误消息重定向到.log文件。

注意事项

  • RTC 代表实时时钟。rtcwake 使用计算机的硬件时钟(您可以在 BIOS 中设置)来确定何时唤醒计算机。如果您使用的是旧计算机,CMOS 电池电量耗尽,无法让时钟正常运行,则此方法将不起作用。
  • 如果睡眠、挂起到 RAM 或休眠模式在您的 Linux 系统上不能正常工作 - 可能是因为 Linux 没有驱动程序使它们在您的硬件上正常工作 - 这可能无法工作。
  • 将笔记本电脑设置为在特定时间自动唤醒时要小心。您肯定不希望它在笔记本电脑包中被唤醒、运行、过热或耗尽电池。

答案3

我希望我的计算机每天晚上当地时间 11:59 进入睡眠状态,每天早上 9:00 唤醒。

我知道 cronjobs 可以帮助解决这个问题。

我使用了一个工具(例如https://cron.help/#59_23_*_*_*) 向我展示我想要的入睡时间表的正确语法是59 23 * * *

然后我需要计算睡眠应该持续多少秒:上午 9:00 是晚上 11:59 后 9 小时 + 1 分钟。(9 * 60 + 1)* 60 = 32460 秒

因此我运行crontab -e通过 vim 编辑 cron 作业并添加了以下两行:

# inspired by https://askubuntu.com/a/1348204/48214 and https://askubuntu.com/a/1012051/48214 and https://itectec.com/ubuntu/ubuntu-automatically-sleep-and-wake-up-at-specific-times/
59 23 * * * /usr/sbin/rtcwake -m disk -s 32460 >> /code/cron.log 2>&1

我保存了该文件。


上述步骤适用于大多数计算机上的大多数人,但不幸的是,我意识到这个快速测试我那台古老的电脑有问题rtcwake

因此,我现在使用的只是按照计划暂停我的计算机,而我还没有弄清楚如何安排唤醒:

59 23 * * * echo "$(date) Running /usr/local/bin/systemctl-suspend" >> /code/cron.log && /usr/local/bin/systemctl-suspend >> /code/cron.log 2>&1

我从https://unix.stackexchange.com/a/642533/48973

相关内容