每天23:00定时关机需用sudo crontab -e编辑root的crontab,添加0 23 * /sbin/shutdown -h now,必须用全路径且以root权限运行,普通用户crontab因权限不足会静默失败。

Ubuntu如何设置定时关机及唤醒计划

定时关机用 cron,不是 shutdown -c 能取消的那种

如果只是临时用 shutdown +10shutdown 23:00 安排关机,那还好处理,直接执行 shutdown -c 就能撤销;可一旦把这件事写进 cron,逻辑就完全变了。因为它并不是在系统里挂着一个“待执行的关机预约”,而是由 cron 每分钟去拉起一次 /sbin/shutdown -h now,命令跑完就结束,整个过程根本不存在可以被取消的“预约状态”。

所以关键点是:想每天 23:00 关机,必须用 sudo crontab -e 编辑 root 的 crontab,写入:

0 23 * * * /sbin/shutdown -h now

rtcwake 是唯一能真正“定时唤醒”的命令

Linux 内核支持 RTC(实时时钟)唤醒,但仅限于休眠(suspend)状态,不支持关机(poweroff)后唤醒。也就是说:你不能让机器“彻底断电后自己开机”,但可以让它“休眠到某个时间点自动醒来”。

典型用法是先休眠,再设定唤醒时间:

sudo rtcwake -m mem -s 300

定时关机 + 定时唤醒要组合使用,不能只靠 cron

单纯靠 cron 只能关机,无法唤醒;单纯靠 rtcwake 只能唤醒,不能关机。二者必须配合,且顺序不能错。

常见可靠流程是:用 cron 在目标时间前几分钟执行 rtcwake 设定唤醒时间,然后立刻休眠:

55 23 * * * /usr/bin/sudo /usr/sbin/rtcwake -m mem -t $(date -d "tomorrow 06:00" +%s) -s 0

图形界面设置看似简单,实际限制最多

Ubuntu 设置里的“电源 > 自动关机”选项,底层调用的是 systemd-logind 的 idle timeout 机制,不是真正定时,而是“空闲 X 分钟后关机”。它不响应具体钟表时间,也无法设定唤醒。

真正可靠的定时关机+唤醒组合,核心就两点:用 sudo crontab 控制关机/休眠时机,用 rtcwake 控制唤醒时刻。中间没有魔法层,所有环节都要亲手验证是否生效——尤其是 BIOS 设置和内核是否识别 RTC 设备,这两处最容易卡住。

本文转载于:https://www.php.cn/faq/3004606.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。