在 Ubuntu 22.04 中定时重启可以通过以下方法实现:
创建 systemd 服务文件
bash展开代码sudo nano /etc/systemd/system/reboot.service
在文件中添加以下内容
ini展开代码[Unit]
Description=System Reboot
[Service]
Type=oneshot
ExecStart=/sbin/reboot
[Install]
WantedBy=multi-user.target
创建 systemd 定时器文件
bash展开代码sudo nano /etc/systemd/system/reboot.timer
在定时器文件中添加
ini展开代码[Unit]
Description=Reboot at 4 AM daily
[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true
[Install]
WantedBy=timers.target
启用并启动定时器
bash展开代码sudo systemctl daemon-reload
sudo systemctl enable reboot.timer
sudo systemctl start reboot.timer
检查状态
bash展开代码sudo systemctl list-timers --all
编辑 root 用户的 crontab
bash展开代码sudo crontab -e
添加重启任务,在文件末尾添加
展开代码# 每天凌晨4点重启 0 4 * * * /sbin/reboot # 或者添加日志记录 0 4 * * * /sbin/reboot 2>&1 | logger -t "scheduled-reboot"
保存并退出
如果你使用的是笔记本电脑,可能不会一直开机,可以使用 anacron:
创建每日任务文件
bash展开代码sudo nano /etc/cron.daily/reboot-task
添加以下内容
bash展开代码#!/bin/bash
# 如果现在是凌晨4点到5点之间,则重启
HOUR=$(date +%H)
if [ "$HOUR" -eq 4 ]; then
/sbin/reboot
fi
添加执行权限
bash展开代码sudo chmod +x /etc/cron.daily/reboot-task
检查 systemd 定时器
bash展开代码sudo systemctl status reboot.timer sudo systemctl list-timers
检查 crontab
bash展开代码sudo crontab -l
确保你有保存所有工作,因为重启会终止所有运行的程序
考虑添加延迟重启选项,给用户保存的时间:
bash展开代码# 在重启前广播警告消息
0 4 * * * /sbin/shutdown -r 05:00 "系统将在5分钟后重启进行维护"
如果你希望只在特定日期重启,可以调整时间表达式:
0 4 * * 1-50 4 * * 1推荐使用 systemd 定时器,因为它是 Ubuntu 22.04 的默认调度系统,提供更好的日志和管理功能。


本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!