我编写了一个 Nagios 检查程序,用于计算正在运行的 pgpool 进程数以及每个进程的运行时间。我在 Linux CentOS 6.4 上运行
为了获取进程运行的时间,我使用了下一个命令:
ps -p PID -o etime=
例子:
[root@pgpool ~]# ps -p 28737 -o etime=
08:35:48
[root@pgpool ~]#
这是正常输出,但有时我会得到以下输出,并且它会破坏脚本:
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 ~]#
我的问题是:
- 这是什么意思?这个过程运行了 7 到 17 个小时?
- 为什么输出布局有时会有所不同?
答案1
man ps
, 部分etime
:
etime ELAPSED 自进程启动以来经过的时间,格式为 [[dd-]hh:]mm:ss。
因此您的流程运行的时间超过一天。