为什么这不会杀死远程进程?

Why does this not kill remote process?

以下命令在本地终端中有效:

ps aux | grep "script.py" | awk {'print '} | xargs kill -2

但是这个命令不能远程工作:

ssh -o ConnectTimeout=6 john@remote-pc ps aux | grep "script.py" | awk {'print '} | xargs kill -2

...即使远程上的 script.py 属于 john,我们也是 ssh 用户。我能ping通,其他命令也能成功。

您需要对管道进行转义,以便将它们传递给 ssh 命令,而不是由您的本地 shell 执行,否则 ps aux 之后的所有内容都会在您的本地执行机.

ssh -o ConnectTimeout=6 john@remote-pc ps aux \| grep "script.py" \| awk {\'print \'} \| xargs kill -2