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

发布于 2024-11-01 08:29:57 字数 224 浏览 7 评论 0原文

我像这样编写了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山田美奈子 2024-11-08 08:29:57

尝试

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

try

system("ssh -t host1 'rsync -av /tmp/file host2:/tmp/'");
好听的两个字的网名 2024-11-08 08:29:57

我想如果您检测到 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文