发布于2026-08-17 阅读(0)
扫一扫,手机访问
每天23:00定时关机需用sudo crontab -e编辑root的crontab,添加0 23 * /sbin/shutdown -h now,必须用全路径且以root权限运行,普通用户crontab因权限不足会静默失败。

cron,不是 shutdown -c 能取消的那种如果只是临时用 shutdown +10 或 shutdown 23:00 安排关机,那还好处理,直接执行 shutdown -c 就能撤销;可一旦把这件事写进 cron,逻辑就完全变了。因为它并不是在系统里挂着一个“待执行的关机预约”,而是由 cron 每分钟去拉起一次 /sbin/shutdown -h now,命令跑完就结束,整个过程根本不存在可以被取消的“预约状态”。
所以关键点是:想每天 23:00 关机,必须用 sudo crontab -e 编辑 root 的 crontab,写入:
0 23 * * * /sbin/shutdown -h now
/sbin/shutdown 全路径,cron 不读用户 $PATHcrontab -e),否则权限不足,关机失败静默sudo crontab -e,删掉或注释掉那一行rtcwake 是唯一能真正“定时唤醒”的命令Linux 内核支持 RTC(实时时钟)唤醒,但仅限于休眠(suspend)状态,不支持关机(poweroff)后唤醒。也就是说:你不能让机器“彻底断电后自己开机”,但可以让它“休眠到某个时间点自动醒来”。
典型用法是先休眠,再设定唤醒时间:
sudo rtcwake -m mem -s 300
-m mem 表示进入内存休眠(S3),醒来快、功耗低;-m disk 是休眠到硬盘(hibernate),更省电但唤醒慢-s 300 表示 5 分钟后唤醒;也可以用 -t $(date +%s -d "tomorrow 06:00") 精确到某时刻单纯靠 cron 只能关机,无法唤醒;单纯靠 rtcwake 只能唤醒,不能关机。二者必须配合,且顺序不能错。
常见可靠流程是:用 cron 在目标时间前几分钟执行 rtcwake 设定唤醒时间,然后立刻休眠:
55 23 * * * /usr/bin/sudo /usr/sbin/rtcwake -m mem -t $(date -d "tomorrow 06:00" +%s) -s 0
-s 0)rtcwake 命令,确认能正常唤醒,再塞进 cronUbuntu 设置里的“电源 > 自动关机”选项,底层调用的是 systemd-logind 的 idle timeout 机制,不是真正定时,而是“空闲 X 分钟后关机”。它不响应具体钟表时间,也无法设定唤醒。
rtcwake 协同,也不能替代 cron 的精确调度真正可靠的定时关机+唤醒组合,核心就两点:用 sudo crontab 控制关机/休眠时机,用 rtcwake 控制唤醒时刻。中间没有魔法层,所有环节都要亲手验证是否生效——尤其是 BIOS 设置和内核是否识别 RTC 设备,这两处最容易卡住。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9