Как остановить процесс rsync системой ("ssh host rsync ...")? - PullRequest
0 голосов
/ 16 апреля 2011

Я написал как этот скрипт на Perl. (/tmp/file is fuge)

system("ssh host1 'rsync -av /tmp/file host2:/tmp/'");

Затем я запускаю этот скрипт и убиваю по Ctrl + C.

Скрипт былостановлен, но процесс rsync на хосте 1 все еще выполняется.

Как остановить процесс rsync с помощью Ctrl + C?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

1001 * попробовать *

system("ssh -t host1 'rsync -av /tmp/file host2:/tmp/'");
0 голосов
/ 16 апреля 2011

Полагаю, вы захватите идентификатор процесса rsync (PID) и уничтожите этот PID, если обнаружите прерывание CTRL-C.Используя сценарии bash, вы можете захватить последний pid, используя pid = $! .Вы можете обнаружить прерывание CTRL-C (SIGINT = 2), используя функцию bash trap для этого сигнала SIGINT, например: trap 'clean_exit' SIGINT , которая запускает чистый выход функция.Затем вы можете делать все, что вам нужно, в функции чистого выхода, например, убивать ранее записанный PID.

...