当存在多个用户进程时从 processid 获取用户

Getting User from processid when multiple user processes exist

我正在尝试调整一个 bash 脚本以在有多个应用程序 运行 宁作为 masterId 时拉回单个应用程序帐户的 PID。这曾经在个人用户帐户下 运行,但最近的更改迫使应用程序在组合 "masterId" 下所有 运行,但仍然保持一个唯一的应用程序 ID,我可以 grep 反对。

正常

pgrep -u "appId" 

会给我一个 PID。现在我必须 运行:

pgrep -u "masterId"

它 returns 所有 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?有更好的方法吗?

pgrep --euid "masterId" --list-full | awk '/appAccount(n)/ {print }'

输出完整的进程命令行,然后select具有所需帐户的命令行并打印第一个字段(pid)。