bash - 如何远程杀死进程ID Bash
问题描述
在 linux 设备上,以下进程 ID 运行:
我正在尝试远程(通过在另一台设备上运行的 bash 脚本)杀死与 ads2 相关的进程 ID(如上图所示)。所以我尝试了:
ssh nvidia@"id-address" "kill pgrep ads2"
wherepgrep
返回与 相关的进程 ID ads2
。当我运行脚本时,它提示我输入密码,然后什么也没有发生,我的意思是进程没有终止。
但是,我无法弄清楚错误在哪里。
提前致谢
解决方案
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\`"
推荐阅读
- python - Spyder 中的 Pylint 在 conda 环境中引发“E401 无法导入”
- javascript - 导航到下一页时如何正确清理打开的菜单
- r - 来自 R 中 QAP Logistic 回归的伪 R^2 度量(sna 包中的 netlogit)
- firebase - 使用模拟器而不是云进行 Firebase 云功能测试
- mongodb - 如何为嵌套文档编写聚合查询?
- ios - 在代码中使用 Info.plist 中定义的键作为常量
- keycloak - 在 keycloak 中组织和验证公司
- python-3.x - MemoryError:无法为形状(725000、277、76)和数据类型 float64 的数组分配 30.4 GiB
- c# - BackgroundService.StartAsync,它应该在启动期间完成还是阻塞?
- java - '<' 字符显示为 < 在肥皂反应中