Linux: ps 命令的输出与预期的随机不同,你能找到原因吗?

Ita*_*not 2 monitoring ps

我写了一个 Nagios 检查,它计算有多少 pgpool 进程正在运行以及每个进程运行了多长时间。我在 Linux CentOS 6.4 上运行

为了获得进程运行的时间,我使用了下一个命令:

ps -p PID -o etime=
Run Code Online (Sandbox Code Playgroud)

例子:

[root@pgpool ~]# ps -p 28737 -o etime=
   08:35:48
[root@pgpool ~]#
Run Code Online (Sandbox Code Playgroud)

这是正常输出,但有时我会得到以下输出并破坏脚本: 7-17:15:52 示例:

[root@pgpool ~]# for prc in $(ps -ef | grep pgpool | grep -v wait | grep -v PCP | awk '{print $2}'); do ps -p $prc -o etime= ; done
      40:55
   22:08:43
      23:55
   15:12:36
      20:35
 7-17:15:52
   09:34:35
29-00:56:18
[root@pgpool ~]#
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 这是什么意思?该过程在 7 到 17 小时之间运行?
  • 为什么有时输出布局不同?

Sve*_*ven 13

man ps,部分etime

etime ELAPSED 自进程开始以来经过的时间,格式为 [[dd-]hh:]mm:ss。

因此,您的流程运行时间超过一天。