Linux系统可通过shutdown、at、cron和systemd timer四种命令实现定时关机:shutdown支持相对/绝对时间一次性关机;at适用于单次精确时间任务;cron用于周期性关机;systemd timer为现代发行版推荐方案,支持精确控制与日志审计。

如果您希望Linux系统在指定时间或延时后自动关机,则可通过内置命令工具实现。以下是多种可行的操作方法:
一、使用shutdown命令设置一次性定时关机
shutdown是Linux标准关机工具,支持相对时间和绝对时间两种模式,所有操作均需root权限或sudo提权。该命令会在关机前向所有登录用户广播通知,并预留默认60秒缓冲期(可自定义)。
1、执行10分钟后关机:sudo shutdown -h +10
2、执行当天23:45关机:sudo shutdown -h 23:45
3、立即关机(无延迟):sudo shutdown -h now
4、附加自定义提示消息:sudo shutdown -h +15 "系统将在15分钟后维护关机,请保存工作"
5、取消已设定的定时任务:sudo shutdown -c
二、使用at命令执行单次定时关机
at命令适用于仅需执行一次的精确时间关机任务,不依赖周期性调度机制,适合临时性安排。需确保atd服务正在运行,且用户在/at.allow中被授权或未被/at.deny排除。
1、启动atd服务(如未启用):sudo systemctl start atd
2、设置今晚22:05执行关机:echo "/sbin/shutdown -h now" | at 22:05
3、查看待执行的at任务:atq
4、删除编号为3的待执行任务:atrm 3
三、使用cron设置周期性定时关机
cron是Linux系统级周期任务调度器,适用于每日、每周等重复性关机需求。必须编辑root用户的crontab,普通用户无法触发关机动作。
1、以root权限编辑定时任务列表:sudo crontab -e
2、添加每天凌晨1:30关机任务:30 1 * * * /sbin/shutdown -h now
3、添加每周五22:00关机任务:0 22 * * 5 /sbin/shutdown -h now
4、保存退出后验证内容是否写入:sudo crontab -l
四、使用systemd timer实现现代Linux定时关机
systemd timer是较新发行版(如Ubuntu 16.04+、CentOS 7+、Debian 8+)推荐的替代方案,具备更精确的时间控制与状态追踪能力,支持持久化和日志审计。
1、创建关机服务单元文件:sudo nano /etc/systemd/system/daily-shutdown.service
2、在该文件中写入以下内容:[Unit]\nDescription=Daily Shutdown\n[Service]\nType=oneshot\nExecStart=/sbin/shutdown -h now
3、创建对应timer单元文件:sudo nano /etc/systemd/system/daily-shutdown.timer
4、在timer文件中写入:[Unit]\nDescription=Shutdown daily at 02:00\n[Timer]\nOnCalendar=*-*-* 02:00:00\nPersistent=true\n[Install]\nWantedBy=timers.target
5、重载配置并启用timer:sudo systemctl daemon-reload && sudo systemctl enable --now daily-shutdown.timer










