如何远程杀死进程 ID Bash
How kill process ID remotely Bash
在 linux 设备上,以下进程 ID 运行s:
我正在尝试远程终止与 ads2(如上图所示)相关的进程 ID(通过另一台设备上 运行 的 bash 脚本)。所以我尝试了:
ssh nvidia@"id-address" "kill pgrep ads2"
其中 pgrep
returns 与 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\`"
在 linux 设备上,以下进程 ID 运行s:
我正在尝试远程终止与 ads2(如上图所示)相关的进程 ID(通过另一台设备上 运行 的 bash 脚本)。所以我尝试了:
ssh nvidia@"id-address" "kill pgrep ads2"
其中 pgrep
returns 与 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\`"