问题描述
在 linux 设备上,运行以下进程 ID:
我正在尝试远程终止与 ads2(如上图所示)相关的进程 ID(通过在另一台设备上运行的 bash 脚本)。所以我尝试了:
ssh nvidia@"id-address" "kill pgrep ads2"
其中 pgrep
返回与 ads2
相关的进程 ID。当我运行脚本时,它提示我输入密码,然后什么也没发生,我的意思是进程没有终止。
但是,我不知道错误在哪里。
提前致谢
解决方法
kill
期望其后有一个数字(或数字列表)。 pgrep ads2
只是文字!
为了让 bash 将单词 pgrep ads2
替换为运行该命令的结果以生成 kill 15951 15995
,您可以使用反引号。
即:kill `pgrep ads2`
将首先运行 pgrep ads
,然后 kill (result of pgrep ads2)
但是,当您通过 ssh 执行此操作时,您的计算机将在远程之前运行反引号。 IE。 pgrep ads
将在您的本地计算机上运行,而 kill
将在远程计算机上运行,这将不起作用。所以你必须像这样逃避反引号:
ssh nvidia@"id-address" "kill \`pgrep ads2\`"