正德厚生,臻于至善

编写一个守护脚本并结合cron定时任务来监控和重启rsync进程

步骤1:编写Shell脚本
创建一个脚本文件(如rsync_watchdog.sh),内容如下:

#!/bin/bash

# 设置PATH环境变量,确保rsync可访问
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 匹配特定的rsync进程(根据你的命令调整正则表达式)
RSYNC_PATTERN="rsync.*--partial.*/backup root@erpsit:/data"

# 日志文件路径
LOG="/data/rsync_watchdog.log"

# 检查是否有匹配的rsync进程
if ! pgrep -f "$RSYNC_PATTERN" > /dev/null; then
    echo "$(date +'%Y-%m-%d %H:%M:%S') - Rsync进程不存在,正在启动..." >> "$LOG"
    # 替换为你的实际rsync命令,并后台运行
    rsync -avz --partial --progress /backup root@erpsit:/data >> "$LOG" 2>&1 &
    echo "$(date +'%Y-%m-%d %H:%M:%S') - Rsync已启动,PID: $!" >> "$LOG"
fi

‌关键点说明:‌
‌正则表达式匹配‌:RSYNC_PATTERN中的rsync.*--partial.*/backup root@erpsit:/data会匹配包含--partial选项以及源/目标路径的进程。根据你的实际命令调整正则表达式。
‌日志记录‌:所有操作(如进程检测、重启)会记录到/data/rsync_watchdog.log,便于后续排查。
‌后台运行‌:&让rsync在后台执行,避免阻塞脚本。

步骤2:赋予脚本执行权限
chmod +x /data/rsync_watchdog.sh

步骤3:配置Cron定时任务
通过crontab -e添加定时任务,每分钟检查一次:
* * * * * /data/rsync_watchdog.sh

步骤4:验证与调试
‌手动测试脚本‌:
sh /data/rsync_watchdog.sh
查看日志是否正常:
tail -f /data/rsync_watchdog.log
‌检查进程‌:
pgrep -af "rsync.*--partial"
‌模拟进程崩溃‌:
手动终止rsync进程,观察脚本是否能自动重启。

注意事项
‌确保免密登录‌:如果rsync走SSH协议,必须配置SSH密钥认证,避免脚本因密码输入挂起。
‌路径问题‌:在cron中尽量使用绝对路径,避免因环境变量问题导致命令找不到。
‌日志管理‌:长期运行需配置日志轮替(如logrotate),防止日志文件过大。
‌进程误杀‌:正则表达式需足够精确,避免匹配到其他无关的rsync进程。
扩展:处理异常挂起(可选)
如果rsync进程可能假死(无响应但进程存在),可添加超时机制:

# 检查进程是否存在且运行时间(示例逻辑)
PID=$(pgrep -f "$RSYNC_PATTERN")
if [ -n "$PID" ]; then
    # 获取进程运行时间(秒)
    RUNTIME=$(ps -p "$PID" -o etime= | awk '{print $1}')
    if [ "$RUNTIME" -gt 3600 ]; then  # 超过1小时视为异常
        kill "$PID"
        echo "$(date) - 进程已运行超时,强制重启" >> "$LOG"
    fi
fi
通过上述步骤,你的rsync进程将在中断后自动重启,确保传输任务持续进行。
赞(0) 打赏
未经允许不得转载:徐万新之路 » 编写一个守护脚本并结合cron定时任务来监控和重启rsync进程

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册