【发布时间】:2019-08-12 21:05:25
【问题描述】:
当有多个应用程序作为 masterId 运行时,我正在尝试调整 bash 脚本以拉回各个应用程序帐户的 PID。这曾经在个人用户帐户下运行,但最近的更改迫使应用程序全部在组合的“masterId”下运行,但仍保持一个唯一的应用程序 ID,我可以对其进行 grep。
正常
pgrep -u "appId"
会给我一个 PID。现在我必须运行:
pgrep -u "masterId"
它返回所有的 PID(每一个都是它自己的应用程序)。
1234
2345
3456
我试图想出一个命令来让我只返回 appAccount(n) 的 PID,这样我就可以将它传递给其他有用的命令。我可以做一个双重grep(这更接近我想要的):
ps aux | grep -i "masterId" | grep -i "appAccount(n)"
这将为我提供整个单个进程信息,但我只想让 PID 执行以下操作:
ps aux | grep -i "masterId" | grep -i "appAccount(n)" | xargs sudo -u appAccount(n) kill -9
如何修改上述初始命令以仅获取 PID?有没有更好的方法来做到这一点?
【问题讨论】:
-
请发布
ps aux | grep -i "masterId" | grep -i "appAccountA"命令的输出。还有pgrep -l开关。您可以使用awk从流中过滤特定索引,例如awk '{print $3}'将为您提供输入行的第三列。 -
我不明白;在第二种情况下,
appAccount(n)字符串是命令行的一部分吗?它的第一个论点?进程名称?别的东西?pgrep -u masterId -if 'appAccount\(n\)'应该可以,但是你的 Q 太模糊了,很难说。