当前位置: 首页 > news >正文

告别宕机!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️⃣ 添加定时任务

  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

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

http://www.lryc.cn/news/592855.html

相关文章:

  • 目标框的位置以及大小的分布
  • 突破性量子芯片问世:电子与光子首次集成,开启量子技术规模化应用新篇章
  • git--gitlab
  • oracle 11.2.0.4 RAC下执行root.sh脚本报错
  • 参会邀请!2025世界人工智能大会合合信息技术交流日报名启动!
  • Django母婴商城项目实践(五)- 数据模型的搭建
  • Excel导出实战:从入门到精通 - 构建专业级数据报表的完整指南
  • C语言-一维数组,二维数组
  • Java HashMap 详解:从原理到实战
  • 【java 安全】 IO流
  • -lstdc++与-static-libstdc++的用法和差异
  • [2025CVPR-目标检测方向] CorrBEV:多视图3D物体检测
  • 基于极空间NAS+GL-MT6000路由器+Tailscale的零配置安全穿透方案
  • 40.限流规则
  • 数据排序
  • 二进制专项
  • 探索 Vue 3.6 的新玩法:Vapor 模式开启性能新篇章
  • 网安-DNSlog
  • DOM 文档对象模型
  • GI6E 加密GRID電碼通信SHELLCODE載入
  • 柴油机活塞cad【4张】三维图+设计说明书
  • RPG58.可拾取物品二:处理玩家拾取事件
  • vue2 面试题及详细答案150道(81 - 90)
  • android14截屏
  • C++进阶-红黑树(难度较高)
  • mysql复制延迟如何处理
  • 亚马逊新手如何快速上手广告运营,实现品牌曝光与销量提升?
  • Springboot3整合Elasticsearch8(elasticsearch-java)
  • Overleaf撰写文档
  • kubernetes pod 深度解析