首页 > 解决方案 > 如何远程杀死进程ID Bash

问题描述

在 linux 设备上,以下进程 ID 运行:

在此处输入图像描述

我正在尝试远程(通过在另一台设备上运行的 bash 脚本)杀死与 ads2 相关的进程 ID(如上图所示)。所以我尝试了:

ssh nvidia@"id-address" "kill pgrep ads2"

wherepgrep返回与 相关的进程 ID ads2。当我运行脚本时,它提示我输入密码,然后什么也没有发生,我的意思是进程没有终止。

但是,我无法弄清楚错误在哪里。

提前致谢

标签: bashshellcommand-linegrepkill-process

解决方案


kill期望后面有一个数字(或数字列表)。pgrep ads2只是文字!

要让 bashpgrep ads2用运行该命令的结果替换单词以生成kill 15951 15995,您可以使用反引号。

即:kill `pgrep ads2` 将首先运行pgrep ads,然后kill (result of pgrep ads2)

但是,当您通过 ssh 执行此操作时,您的计算机将在远程之前运行反引号。即将pgrep ads在您的本地机器上运行,kill在远程机器上运行,这是行不通的。所以你必须像这样逃避反引号:

ssh nvidia@"id-address" "kill \`pgrep ads2\`"

推荐阅读