Мой ответ основан на запросе teru.
Мне нужен вспомогательный сценарий ~ / helper
на сервере server.ip:
#!/bin/bash
TUBE=/tmp/sshCoLab_myfifo.$$;
mkfifo "$TUBE"
( <"$TUBE" "$@" ; rm "$TUBE" ; kill -TERM 0 ) &
cat >"$TUBE" ;
rm "$TUBE" ;
kill -TERM 0 ;
Если он вызывается, например, с
ssh server.ip ~/helper echo hello from server
и выполняет echo hello с сервера
по адресу server.ip, после чего клиент ssh завершает работу.
Если он называется, например, с
ssh server.ip ~/helper sleep 1000 &
CHID=$!
kill -9 $ CHID
также остановит скрипт на сервере. Для меня kill -INT $ CHID
не работает, но я не знаю почему.
В ответ, команда ssh будет ждать вечно, когда удаленная команда будет завершена, потому что cat
никогда не завершится.
Все ответы с ssh -t у меня не работали с kill
, а только с Ctrl-C.
Редактировать: Я обнаружил, что это работало от нового Ubuntu 14.01 до более старой научной версии Linux - но не наоборот. Таким образом, я думаю, что нет общего решения. Странный.
Размер частичных передач не отображается, но вы можете получить общее представление об общем размере набора данных, добавив - -dry-run
и - stats
переключается на rsync
. Он не проверяет обратную сторону операции, чтобы увидеть, сколько данных было изменено, но, по крайней мере, покажет вам размер всех файлов, которые могут быть синхронизированы.