告别宕机!Ubuntu自动重启定时任务设置(一键脚本/手动操作)

适用于服务器、工控机、嵌入式系统、离线 AI 终端等场景,帮助你在 Ubuntu 系统上实现每天自动重启,并保留日志记录。


📌 一、功能概述

  • 每天定时自动重启(如凌晨 2 点)
  • 将重启日志记录到 /var/log/cron_reboot.log
  • 支持一键部署到多台设备
  • 支持后期修改重启时间
  • 支持随时删除定时重启任务
  • 提供脚本版 & 手动操作两种方式

⚙️ 二、方法一:一键脚本自动设置

适合你需要在多台设备快速设置定时重启任务的情况。

1️⃣ 添加定时重启任务脚本

📄 setup_reboot_cron.sh

#!/bin/bash

CRON_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"; then
    echo "✅ 已存在定时重启任务,无需重复添加。"
else
    echo "➕ 添加定时重启任务到 root 的 crontab..."
    (sudo crontab -l 2>/dev/null; echo "$CRON_JOB") | sudo crontab -
    echo "✅ 已成功添加任务:$CRON_JOB"
fi

if [ ! -f /var/log/cron_reboot.log ]; then
    echo "📄 创建日志文件..."
    sudo touch /var/log/cron_reboot.log
    sudo chown root:root /var/log/cron_reboot.log
    sudo chmod 644 /var/log/cron_reboot.log
fi

echo "🎉 自动重启设置完成!"

✅ 默认每天 2:00 AM 重启,如需更改,参考下方“修改时间”。


2️⃣ 修改定时重启时间脚本

📄 update_reboot_time.sh

#!/bin/bash

HOUR="$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" ]]; then
  echo "❗ 用法:./update_reboot_time.sh <小时> <分钟>"
  exit 1
fi

echo "🔄 正在设置重启时间为每天 ${HOUR}:${MINUTE}..."

EXISTING=$(sudo crontab -l 2>/dev/null)

if echo "$EXISTING" | grep -Fq "$CMD"; then
  UPDATED=$(echo "$EXISTING" | sed "s|.*$CMD|$NEW_CRON|")
  echo "$UPDATED" | sudo crontab -
else
  (echo "$EXISTING"; echo "$NEW_CRON") | sudo crontab -
fi

echo "✅ 已设置定时重启为 ${HOUR}:${MINUTE}"

✅ 使用方法(示例:改为凌晨 1:30):

./update_reboot_time.sh 1 30

3️⃣ 删除定时重启任务脚本

📄 remove_reboot_cron.sh

#!/bin/bash

CMD="/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"; then
  UPDATED=$(echo "$EXISTING" | grep -Fv "$CMD")
  echo "$UPDATED" | sudo crontab -
  echo "✅ 定时重启任务已删除。"
else
  echo "ℹ️ 没有找到重启任务,无需删除。"
fi

✅ 执行:

./remove_reboot_cron.sh

🛠️ 三、方法二:手动设置(适合单机操作)

1️⃣ 添加定时任务

  1. 打开 root 的 crontab:

    sudo crontab -e
    
  2. 添加以下内容(默认每天 2:00 重启):

    0 2 * * * /usr/sbin/shutdown -r now >> /var/log/cron_reboot.log 2>&1
    

    这里的含义:

    时间字段
    分钟0
    小时2
    *
    *
    星期*
  3. 创建日志文件(可选):

    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:3030 1
早上 4:000 4

3️⃣ 删除定时重启任务

还是执行:

sudo crontab -e

直接删除包含 shutdown -r now 的那一行即可。


🔗 四、批量部署小技巧

你可以用 scpssh 在局域网快速推送这些脚本到多台设备:

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

如果觉得本文对你有帮助,欢迎一键三连:点赞 👍、收藏 ⭐、评论 💬 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeepTechTalk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值