![pgrep 输出是否包含提供给进程的参数?](https://linux22.com/image/40035/pgrep%20%E8%BE%93%E5%87%BA%E6%98%AF%E5%90%A6%E5%8C%85%E5%90%AB%E6%8F%90%E4%BE%9B%E7%BB%99%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%8F%82%E6%95%B0%EF%BC%9F.png)
下面的代码片段(来自现有脚本)用于检查xvfb
进程以及它们是否正在监听特定端口:
my_list=`pgrep -u $CurrentUserID -fl Xvfb | grep :${XVFBPORT}`
process_list=`pgrep -fl Xvfb | grep :${XVFBPORT}`
Xvfb 进程以以下格式启动:
Xvfb :619 -fp /usr/share/fonts/X11/misc # i.e. in this case XVFBPORT is 619
显然这在 Ubuntu 上并不能按预期工作,因为 的输出pgrep -fl Xvfb
会给出类似以下内容:
4812 Xvfb
,末尾没有“:619”。显然,通过一些额外的管道ps
可以轻松修复。
是否有其他发行版或配置pgrep
可以提供脚本预期的输出?
答案1
pgrep
from的最新版本procps-ng
有这个-a
选项。
-a, --list-full
List the full command line as well as the process ID.
所以pgrep -afl Xvfb | grep 619
应该打印:
4812 Xvfb :619 -fp /usr/share/fonts/X11/mis
在我的 Debian Jessie(测试)上,存在此选项,并且安装的软件包是procps-ng 3.3.9
,但我找不到引入此选项时的版本,也许该选项存在于 中procps-ng
,但不存在于 中procps
。