如何通过系统停止rsync进程(“ssh host rsync ...”)?

时间:2011-04-16 09:26:28

标签: perl ssh rsync

我写的就是这个Perl脚本。(/tmp/file是fuge)

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

然后,我运行此脚本,然后按Ctrl + C终止。

脚本已停止,但host1上的rsync进程仍在运行。

如何通过Ctrl + C停止rsync进程?

2 个答案:

答案 0 :(得分:0)

我猜你应该捕获rsync进程id(PID)并在你检测到CTRL-C中断时终止这个PID。使用bash脚本,您可以使用 pid = $!捕获最后一个pid。您可以使用此信号SIGINT上的bash 陷阱函数检测CTRL-C中断(SIGINT = 2),例如:陷阱'clean_exit'SIGINT 启动干净退出功能。然后你可以在干净的退出功能中做任何你需要的事情,比如杀死以前捕获的PID。

答案 1 :(得分:0)

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