如何通过系统停止rsync进程(“ssh主机rsync...”)?
我像这样编写了 Perl 脚本。(/tmp/file
is fuge)
system("ssh host1 'rsync -av /tmp/file host2:/tmp/'");
然后,我运行这个脚本,并按 Ctrl+C 终止。
脚本已停止,但 host1 上的 rsync 进程仍在运行。
如何通过Ctrl+C停止rsync进程?
I wrote like this Perl script.(/tmp/file
is fuge)
system("ssh host1 'rsync -av /tmp/file host2:/tmp/'");
Then, I run this script, and kill by Ctrl+C.
The script has been stopped, but rsync process on host1 is still running.
How to stop the rsync process by Ctrl+C?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试
try
我想如果您检测到 CTRL-C 中断,您应该捕获 rsync 进程 id (PID) 并终止该 PID。使用 bash 脚本,您可以使用 pid=$! 捕获最后一个 pid。您可以在此信号 SIGINT 上使用 bash trap 函数来检测 CTRL-C 中断 (SIGINT=2),例如: trap 'clean_exit' SIGINT 启动 干净的退出功能。然后你可以在干净退出函数中做任何你需要做的事情,比如杀死之前捕获的PID。
I guess you shall capture the rsync process id (PID) and kill this PID if you detect the CTRL-C interruption. Using bash scripting, you can capture the last pid by using pid=$!. You can detect the CTRL-C interruption (SIGINT=2) using the bash trap function on this signal SIGINT, like: trap 'clean_exit' SIGINT which start the clean exit function. Then you can do whatever you need within the clean exit function, like killing the previously captured PID.