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

如何使用bash杀死远程服务器上的多个进程,bash,ssh,Bash,Ssh,我有一个非常简单的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 "ki

我有一个非常简单的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后都包含换行符,您可以在远程
ssh
中使用此
xargs
命令:

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

ssh root@$server”xargs kill-9可能是因为里面有新行。试试这个:
ssh root@$server”xargs kill-9@melpomene有意义。但是我在“echo$old_tailf_pids”中没有看到任何内容。当您使用适当的引用,如
echo“$old_tailf_pids”
@anubhava works时,将显示换行符!谢谢