如何按进程开始时间对ps输出进行排序?


Answers:


87

这应该在Linux和SysV5上工作

ps -ef --sort=start_time

完全按照要求运行,谢谢。经过进一步的挖掘,我不确定在Mac OS上没有一点awk的可能性吗
Dean Smith 2009年

1
start_time工作。lstart没有。RHEL
Felipe Alvarez'3

1
如何取消订单?
富阮

2
@PhuNguyen参加聚会有点晚,但也许有人对此有用。您可以通过将输出通过管道传递来反转顺序tac
保罗

1
@Stephane尝试以下方法:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre

11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started

2
恐怕这些都不是开始时间。它确实显示开始时间,但不排序。
迪恩·史密斯

2
lstart和start_time之间的差异也lstart使我感到困惑- 提供了完整的时间戳,但不能用作排序键。start_time给出通常的“过去24小时内的时间,否则为日期”列,并且可以用作排序键。两者都在标题中给出“ STARTED”。
LHMathies 2012年

最后一小时内的时间:如果某个流程是在昨天晚于今天的某个时间启动的,则它将在今天的流程之后出现……无法按类别使用,除非有一点“ awk”改变
奥利维尔·杜拉克

@OlivierDulac:不适合我。15/12 15:40出现在之前16/12 15:39,就像13:39出现在之前15:38
Gauthier 2014年

1
lstart对我不起作用。start_time做到了。
费利佩·阿尔瓦雷斯

5

除了上述出色的答案之外,有时我只想按进程,时间,cpu%和内存使用率的降序查看前20名违规者。

为此,我使用:

ps auxww --sort=lstart | sort -r -k3,4 | head -20

这将在CentOS平台上进行,尽管我在Fedora上也获得了相同的结果。

哦,为笑而已,有时我想删除一组进程,因此我只是在上面使用了一个变体,其中包括一些grep -v操作,例如:

ps auxww --sort=lstart | sort -r -k3,4 | grep -v "sbin/httpd" | head -20

--sortps不适合我的工作。依靠外壳sort。+1
kellogs 2015年

3

我还不能发表评论,但是要回答有关如何反转时间排序顺序的问题,只需-在该字段前面放置一个减号()。
例:ps -elf --sort=-start_time


2

或尝试使用“ ls”,因为它允许易于排序且易于使用的时间格式。

( cd /proc; ls -td --full-time --time-style=+%s [0123456789]*; )

以新纪元输出日期/时间,最上面的procs。


这仅显示了pids
elig

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.