【问题标题】:How kill process ID remotely Bash如何远程杀死进程ID Bash
【发布时间】:2021-05-10 12:18:55
【问题描述】:

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

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

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

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

但是,我不知道错误在哪里。

提前致谢

【问题讨论】:

  • ssh nvidia@"id-address" "pkill ads2" ?

标签: bash shell command-line grep kill-process


【解决方案1】:

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\`"

【讨论】:

  • 感谢您的回答。这对我来说非常有效。但是,它提示我输入远程设备的密码,我想知道我是否可以在脚本中传递密码 ^ ^ 而不是手动输入?
  • @Zang322 :由于这是一个完全不同的问题,我建议你问一个不同的问题 - 当然在谷歌搜索 provide password for ssh from script 或其他东西失败之后像这样。
  • @user1934428 你在写。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
相关资源
最近更新 更多