gpt4 book ai didi

bash - 如何使用bash杀死远程服务器上的多个进程

转载 作者:行者123 更新时间:2023-12-02 14:29:47 24 4
gpt4 key购买 nike

我有这个非常简单的bash代码,应该可以杀死远程服务器上的tail -f进程列表。

old_tailf_pids=`ssh root@$server "ps -ef | grep 'tail -f -n +1 /opt/wd' | grep root | grep -v grep | sed -e \"s@root *\([0-9]\+\) .*@\1@g\""`
echo $old_tailf_pids
echo "Killing old tailfs..."
ssh root@$server "kill -9 $old_tailf_pids"

输出:
4007 5281 5906 8265 8823 9918 10477 11587 12213 12753 13396 13976 14558 15985 16788 18128 18762 19412 20109 21393 28924 29487 31542 32155
Killing old tailfs...
bash: line 1: 5281: command not found
bash: line 2: 5906: command not found
bash: line 3: 8265: command not found
bash: line 4: 8823: command not found
bash: line 5: 9918: command not found
...

似乎SSH命令仅杀死了第一个pid,然后试图“运行”其余的pid。知道为什么吗?

谢谢

最佳答案

从问题下方的注释中可以明显看出,变量在每个进程ID之后都包含换行符,您可以在远程xargs中使用此ssh命令:

ssh root@$server "xargs kill -9 <<< \"old_tailf_pids\""

关于bash - 如何使用bash杀死远程服务器上的多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com