停止后再次执行命令(rsync,FreeBSD)

停止后再次执行命令(rsync,FreeBSD)

我开始通过 rsync 备份到远程服务器。一切运行良好,但 40 GB 需要时间,而且由于我获得动态 IP,它每天都会中断。所以每天早上醒来时我都会重新启动 rsync(如果我没忘记的话)。

我可以使用 cronjob,但我真的想在它停止后立即执行它。有办法吗?

答案1

#!/bin/bash
while true
do
    echo "your action (e.g., rsync replacing this line)"

    #If clean exit, stop running
    if [[ $? == 0 ]]
    then
        break
    fi

    #speed throttling
    sleep 10
done

答案2

是的,每当 rsync 或任何命令停止或以错误的方式中断时,它都会发出一个不等于 0 的信号(0 表示成功,否则表示错误)。

因此只需编写一个脚本,检查命令退出状态并将其保存在文件中。然后在 5 秒后继续检查该文件。只要存在状态变为非零,重新启动 rsync 并手动将退出状态设置为 0..继续下去。

相关内容