您现在的位置是:首页 > 随手笔记网站首页随手笔记
Ubuntu 每天5点定时重启一键部署脚本(systemd timer版)
#!/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
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~

