Назад | Перейти на главную страницу

повторное выполнение команды после ее остановки (rsync, FreeBSD)

Я начал делать резервные копии через rsync на удаленный сервер. Это все работает нормально, но 40 гигабайт занимают свое время, и поскольку я получаю динамический IP, он каждый день прерывается. Поэтому каждое утро, просыпаясь, я перезапускаю rsync (если не забыл).

Я мог бы уже использовать cronjob, но мне бы очень хотелось выполнить его сразу после его остановки. Есть ли способ сделать это?

#!/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

Да, всякий раз, когда rsync или какая-либо команда останавливается или прерывается неправильно, он выдает сигнал, который не равен 0 (0 означает успех, в противном случае ошибка).

так что просто напишите сценарий, который проверяет статус выхода команды и сохраняет его в файл. затем продолжайте проверять этот файл, скажем, через 5 секунд. так как существующий статус становится ненулевым, перезапустите rsync и вручную установите 0 в статус выхода .. продолжайте и продолжайте.