告别宕机!Ubuntu自动重启定时任务设置(一键脚本/手动操作)
适用于服务器、工控机、嵌入式系统、离线 AI 终端等场景,帮助你在 Ubuntu 系统上实现每天自动重启,并保留日志记录。
📌 一、功能概述
- 每天定时自动重启(如凌晨 2 点)
- 将重启日志记录到
/var/log/cron_reboot.log
- 支持一键部署到多台设备
- 支持后期修改重启时间
- 支持随时删除定时重启任务
- 提供脚本版 & 手动操作两种方式
⚙️ 二、方法一:一键脚本自动设置
适合你需要在多台设备快速设置定时重启任务的情况。
1️⃣ 添加定时重启任务脚本
📄 setup_reboot_cron.sh
#!/bin/bashCRON_CMD="/usr/sbin/shutdown -r now >> /var/log/cron_reboot.log 2>&1"
CRON_JOB="0 2 * * * $CRON_CMD"echo "🚀 开始设置每日自动重启任务..."if sudo crontab -l 2>/dev/null | grep -Fq "$CRON_CMD"; thenecho "✅ 已存在定时重启任务,无需重复添加。"
elseecho "➕ 添加定时重启任务到 root 的 crontab..."(sudo crontab -l 2>/dev/null; echo "$CRON_JOB") | sudo crontab -echo "✅ 已成功添加任务:$CRON_JOB"
fiif [ ! -f /var/log/cron_reboot.log ]; thenecho "📄 创建日志文件..."sudo touch /var/log/cron_reboot.logsudo chown root:root /var/log/cron_reboot.logsudo chmod 644 /var/log/cron_reboot.log
fiecho "🎉 自动重启设置完成!"
✅ 默认每天 2:00 AM 重启,如需更改,参考下方“修改时间”。
2️⃣ 修改定时重启时间脚本
📄 update_reboot_time.sh
#!/bin/bashHOUR="$1"
MINUTE="$2"
CMD="/usr/sbin/shutdown -r now >> /var/log/cron_reboot.log 2>&1"
NEW_CRON="${MINUTE} ${HOUR} * * * ${CMD}"if [[ -z "$HOUR" || -z "$MINUTE" ]]; thenecho "❗ 用法:./update_reboot_time.sh <小时> <分钟>"exit 1
fiecho "🔄 正在设置重启时间为每天 ${HOUR}:${MINUTE}..."EXISTING=$(sudo crontab -l 2>/dev/null)if echo "$EXISTING" | grep -Fq "$CMD"; thenUPDATED=$(echo "$EXISTING" | sed "s|.*$CMD|$NEW_CRON|")echo "$UPDATED" | sudo crontab -
else(echo "$EXISTING"; echo "$NEW_CRON") | sudo crontab -
fiecho "✅ 已设置定时重启为 ${HOUR}:${MINUTE}"
✅ 使用方法(示例:改为凌晨 1:30):
./update_reboot_time.sh 1 30
3️⃣ 删除定时重启任务脚本
📄 remove_reboot_cron.sh
#!/bin/bashCMD="/usr/sbin/shutdown -r now >> /var/log/cron_reboot.log 2>&1"
EXISTING=$(sudo crontab -l 2>/dev/null)if echo "$EXISTING" | grep -Fq "$CMD"; thenUPDATED=$(echo "$EXISTING" | grep -Fv "$CMD")echo "$UPDATED" | sudo crontab -echo "✅ 定时重启任务已删除。"
elseecho "ℹ️ 没有找到重启任务,无需删除。"
fi
✅ 执行:
./remove_reboot_cron.sh
🛠️ 三、方法二:手动设置(适合单机操作)
1️⃣ 添加定时任务
-
打开 root 的 crontab:
sudo crontab -e
-
添加以下内容(默认每天 2:00 重启):
0 2 * * * /usr/sbin/shutdown -r now >> /var/log/cron_reboot.log 2>&1
这里的含义:
时间字段 值 分钟 0 小时 2 日 * 月 * 星期 * -
创建日志文件(可选):
sudo touch /var/log/cron_reboot.log sudo chown root:root /var/log/cron_reboot.log sudo chmod 644 /var/log/cron_reboot.log
2️⃣ 修改重启时间
再次执行:
sudo crontab -e
将这行的时间字段 0 2
改为你希望的时间:
时间 | 表达式 |
---|---|
凌晨 1:30 | 30 1 |
早上 4:00 | 0 4 |
3️⃣ 删除定时重启任务
还是执行:
sudo crontab -e
直接删除包含 shutdown -r now
的那一行即可。
🔗 四、批量部署小技巧
你可以用 scp
和 ssh
在局域网快速推送这些脚本到多台设备:
scp setup_reboot_cron.sh user@192.168.1.101:~
ssh user@192.168.1.101 'chmod +x setup_reboot_cron.sh && ./setup_reboot_cron.sh'
或者使用更专业的自动化工具如 Ansible、SaltStack、Fabric 等。
📦 五、完整文件打包下载
你可以将这三个脚本打包为 .zip
或 .tar.gz
:
tar -czvf reboot_cron_tools.tar.gz setup_reboot_cron.sh update_reboot_time.sh remove_reboot_cron.sh
上传到网盘或 GitHub 即可一键分发。
✅ 六、总结
功能 | 脚本 | 手动操作 |
---|---|---|
添加定时重启 | setup_reboot_cron.sh | 编辑 sudo crontab -e |
修改重启时间 | update_reboot_time.sh | 修改 crontab 时间字段 |
删除定时重启 | remove_reboot_cron.sh | 删除 crontab 中那一行 |
日志保存 | 自动生成 | 手动创建 /var/log/cron_reboot.log |
🛠️ 附:查看当前已设置的定时任务(验证是否成功设定)
查看当前用户的cron任务:
crontab -l
如果需要查看系统范围内的cron任务(通常是root用户的任务):
sudo crontab -l
如果看到类似于以下内容即为设定成功:
0 3 * * * /sbin/shutdown -r now
更多交流,欢迎关注我,一起 DeepTechTalk
如果觉得本文对你有帮助,欢迎一键三连:点赞 👍、收藏 ⭐、评论 💬 !