pgrep 输出是否包含提供给进程的参数?

pgrep 输出是否包含提供给进程的参数?

下面的代码片段(来自现有脚本)用于检查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

pgrepfrom的最新版本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

相关内容