Как я могу SIGKILL (или SIGINT )все процессы при завершении сеанса tmux?

Опция --timeoutиспользуется для обработки ситуаций, когда удаленный rsyncзавис или стал недоступным по другой причине. Это означает, что «подождите столько секунд, прежде чем отказаться от удаленного соединения ».

Если соединение принудительно закрыто, как в вашем сценарии, соединение больше не существует и rsyncбольше не может взаимодействовать со своим узлом. Так как теперь он может гарантировать, что никогда не получит известие от своего партнера, он сдается и немедленно сообщает вам об ошибке.

В идеале вам следует выяснить, почему ваш сервер без разбора закрывает соединения. Тем временем может помочь зацикливание процесса передачи

.
while :
do
    rsync... /media/Restic/ root@192.168.0.2:/DataVolume/BACKUPS/T4-Ubuntu-Restic &&
        break
    ss=$?

    [[ -t 2 ]] && echo "Rsync failed with status $ss; retrying..." >&2
    sleep 60
done
0
15.04.2020, 18:05
1 ответ

Вы можете попробовать это-

Поместите свою команду в такой скрипт:

tmux lsp...
tmux real-kill-session "$@"

И сделайте +x. Затем добавьте command-aliasвот так:

set -s command-alias[100] 'real-kill-session=kill-session'
set -s command-alias[101] 'kill-session=run /path/to/kill.sh'

Обычно посылать все сообщения SIGKILL — плохая идея... Возможно, SIGTERM или SIGINT, но они не должны отличаться от SIGHUP.

0
19.03.2021, 02:28

Теги

Похожие вопросы