不确定这属于这里还是属于 Linux 和 Unix。
我正在运行以下命令...:
ps -eo pid -eo pcpu -eo pmem -eo time -eo command | sort -k 2 -r | awk '/frmweb/ && !/PID/ && $2+0>0' > /tmp/deadpidlist.log
要得到这样一个不错的列表:
7445 3.4 0.3 00:00:06 frmweb webfile=HTTP-0,bosscars_prod_jpi
7570 2.2 0.2 00:00:01 frmweb webfile=HTTP-0,prod_sso
7550 1.3 0.2 00:00:01 frmweb webfile=HTTP-0,prod_sso
24730 0.8 0.3 00:01:55 frmweb webfile=HTTP-0,prod_sso
7557 0.8 0.2 00:00:00 frmweb webfile=HTTP-0,prod_sso
16893 0.6 0.2 00:02:19 frmweb webfile=HTTP-0,prod_sso
20906 0.5 0.2 00:01:40 frmweb webfile=HTTP-0,prod_sso
这有一段时间没问题,但我的脚本喜欢获取刚刚生成的进程。因此,我想做的是通过仅考虑 CPU 时间超过一分钟的 PIDS(第 4 列)来进一步过滤此列表。
谢谢!
最佳答案
改用这个:
... | awk '/frmweb/ && !/PID/ && $2+0>0 && substr($4,4,2)+0>1'
substr
函数允许您从第 4 列的位置 4 开始获取 2 个字符(以及之后的两个字符)以针对 >1
条件进行测试。如果为真,则打印该行。
或者,按照 chepner 的建议在评论中:
... | awk '/frmweb/ && !/PID/ && $2+0>0 && $4!~"00:00:"'
关于linux - 按 CPU 时间过滤 ps 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25732291/