您现在的位置是:首页 > 随手笔记网站首页随手笔记

Ubuntu 每天5点定时重启一键部署脚本(systemd timer版)

  • 小鑫
  • 2026-04-17 22:32:54
  • 139 次阅读
#!/bin/bash # Ubuntu 每天5点定时重启一键部署脚本(systemd timer版,带日志) # 确保以root权限运行 if [ "$(id -u)" -ne 0 ]; then echo "请使用sudo权限运行此脚本(...
sudo bash -c '
#!/bin/bash
# Ubuntu 每天5点定时重启一键部署脚本(systemd timer版,带日志)
# 确保以root权限运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用sudo权限运行此脚本(sudo bash -c '粘贴脚本内容')"
    exit 1
fi

# 定义日志文件路径
LOG_FILE="/var/log/systemd_reboot.log"
# 定义systemd服务和定时器名称
SERVICE_NAME="auto-reboot.service"
TIMER_NAME="auto-reboot.timer"
# 定义systemd配置文件路径
SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME"
TIMER_PATH="/etc/systemd/system/$TIMER_NAME"

# 1. 创建日志文件(若不存在),并设置权限
touch $LOG_FILE
chmod 644 $LOG_FILE
echo "? 日志文件已创建/验证:$LOG_FILE"

# 2. 编写systemd重启服务配置(oneshot类型,执行重启并记录日志)
cat > $SERVICE_PATH << EOF
[Unit]
Description=Auto System Reboot Service (Daily 5:00)
Documentation=man:shutdown(8)

[Service]
Type=oneshot
# 执行重启命令,并将输出写入日志
ExecStart=/sbin/shutdown -r now >> $LOG_FILE 2>&1
EOF
chmod 644 $SERVICE_PATH
echo "✅ systemd重启服务已创建:$SERVICE_PATH"

# 3. 编写systemd定时器配置(每天凌晨5:00触发重启服务)
cat > $TIMER_PATH << EOF
[Unit]
Description=Daily Auto Reboot Timer (5:00 AM)
Documentation=man:systemd.timer(5)

[Timer]
# 定时规则:每天5:00:00触发
OnCalendar=*-*-* 05:00:00
# 若系统关机/休眠错过定时时间,开机后自动补执行一次
Persistent=true
# 关联重启服务
Unit=$SERVICE_NAME

[Install]
# 启用定时器时,关联到timers.target(系统定时器目标)
WantedBy=timers.target
EOF
chmod 644 $TIMER_PATH
echo "✅ systemd定时器已创建:$TIMER_PATH"

# 4. 重新加载systemd配置,使服务和定时器生效
sudo systemctl daemon-reload
echo "? systemd配置已重新加载"

# 5. 启用并立即启动定时器(开机自启)
sudo systemctl enable --now $TIMER_NAME
echo "✅ 定时器已启用并启动,开机自动生效"

# 6. 验证配置是否生效
echo -e "\n? 验证定时器状态:"
systemctl list-timers $TIMER_NAME --no-pager
if systemctl is-active --quiet $TIMER_NAME; then
    echo "✅ 定时重启配置已生效!每天凌晨5:00将自动重启"
else
    echo "❌ 配置失败,请检查脚本或重试(可查看日志:journalctl -u $TIMER_NAME)"
fi

# 提示常用操作命令
echo -e "\n? 常用操作命令:"
echo "  1. 查看定时器状态:systemctl list-timers $TIMER_NAME"
echo "  2. 查看重启日志:tail -f $LOG_FILE"
echo "  3. 查看定时器运行日志:journalctl -u $TIMER_NAME"
echo "  4. 停止定时器:sudo systemctl stop $TIMER_NAME"
echo "  5. 禁用定时器(开机不自动启动):sudo systemctl disable $TIMER_NAME"
echo "  6. 删除定时器和服务:sudo rm -f $SERVICE_PATH $TIMER_PATH && sudo systemctl daemon-reload"
echo "✅ systemd timer版一键部署完成!"'


常用操作命令:

  1. 查看定时器状态:systemctl list-timers auto-reboot.timer

  2. 查看重启日志:tail -f /var/log/systemd_reboot.log

  3. 查看定时器运行日志:journalctl -u auto-reboot.timer

  4. 停止定时器:sudo systemctl stop auto-reboot.timer

  5. 禁用定时器(开机不自动启动):sudo systemctl disable auto-reboot.timer

  6. 删除定时器和服务:sudo rm -f /etc/systemd/system/auto-reboot.service /etc/systemd/system/auto-reboot.timer && sudo systemctl daemon-reload


TAG: Ubuntu

文章评论 (0)

    • 这篇文章还没有收到评论,赶紧来抢沙发吧~


Top