linux提供五种定时关机方法:一、shutdown命令一次性关机;二、shutdown后台执行;三、cron周期性关机;四、at命令单次关机;五、systemd timer灵活调度。

如果您希望系统在指定时间或经过一段延迟后自动关机,则可使用 Linux 内置的 shutdown 命令或 cron 守护进程实现。以下是多种可行的操作方法:
一、使用 shutdown 命令设置一次性定时关机
该方法适用于单次延时或定点关机,由 init 系统协调服务终止流程,属于安全关机方式。
1、以 root 权限或使用 sudo 执行命令,在终端中输入:sudo shutdown -h +10,表示 10 分钟后关机。
2、若需在具体时间(如当天 23:45)关机,运行:sudo shutdown -h 23:45。
3、如误设关机任务,立即取消:执行 sudo shutdown -c,系统将中止所有待执行的 shutdown 计划。
二、使用 shutdown 命令配合后台执行设置延时关机
当需要在发出关机指令后继续执行其他命令,或避免终端阻塞,可启用后台模式运行 shutdown。
1、输入:sudo shutdown -h +15 &,该命令将在 15 分钟后关机,且不占用当前终端会话。
2、确认后台任务是否启动:运行 jobs 查看活跃作业列表。
3、若需终止该后台关机任务,先用 kill %1(假设其为作业编号 1)结束进程,再执行 sudo shutdown -c 清除计划。
三、通过 cron 设置周期性定时关机
cron 适合设定每周固定时间、每日例行等重复性关机任务,需编辑 root 用户的 crontab 文件以确保权限足够。
1、以管理员身份打开 root 的定时任务表:sudo crontab -e。
2、在文件末尾新增一行,例如每周五 22:00 关机:0 22 * * 5 /sbin/shutdown -h +0。
3、保存并退出编辑器(nano 中按 Ctrl+O 回车保存,Ctrl+X 退出),系统将自动加载新规则。
四、使用 at 命令安排单次未来时刻关机
at 服务适用于精确到分钟的一次性任务调度,不依赖 cron,但需确保 atd 守护进程正在运行。
1、检查 atd 是否启用:sudo systemctl is-active atd,若显示 inactive,则运行 sudo systemctl start atd 启动。
2、提交关机任务,例如 20 分钟后执行:echo "/sbin/shutdown -h now" | at now + 20 minutes。
3、查看已提交任务:atq;删除某项任务(如编号 3):atrm 3。
五、通过 systemd timer 创建更灵活的定时关机单元
systemd timer 提供更现代的任务调度机制,支持日志追踪与依赖管理,适合高级用户定制化部署。
1、创建定时器单元文件:sudo nano /etc/systemd/system/shutdown-at-2300.timer,写入触发时间配置。
2、创建对应的服务单元文件:sudo nano /etc/systemd/system/shutdown-at-2300.service,内容为 [Service]\nType=oneshot\nExecStart=/sbin/shutdown -h now。
3、启用并启动定时器:sudo systemctl daemon-reload,随后运行 sudo systemctl enable --now shutdown-at-2300.timer。










