Is there a way to sort ps output by process start time, so newest are either at the top or bottom ?
On Linux ?
On SysV5 ?
On Mac ?
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.
Sign up to join this communityIs there a way to sort ps output by process start time, so newest are either at the top or bottom ?
On Linux ?
On SysV5 ?
On Mac ?
This should work on Linux and SysV5
ps -ef --sort=start_time
tac
.
watch "ps -ef --sort=start_time | grep -v kworker | tail"
Linux:
$ ps aux --sort=lstart
OSX:
$ ps aux -O started
lstart
gives a full timestamp, but cannot be used as a sort key. start_time
gives the usual 'time within the last 24 hours, date otherwise' column, and can be used as a sort key. Both give 'STARTED' in the header.
Apr 5, 2012 at 8:22
15/12 15:40
appears before 16/12 15:39
, just as 13:39
appears before 15:38
.
Along with the great answers above, sometimes I just want to see the top 20 offenders by process sorted descending by time, cpu% and memory usage.
For that I use:
ps auxww --sort=lstart | sort -r -k3,4 | head -20
This would be on a CentOS platform, though I've enjoyed the same results on Fedora as well.
Oh and for grins, I sometimes want to remove a set of processes, so I simply use a variant on the above that includes a bit of grep -v action, such as:
ps auxww --sort=lstart | sort -r -k3,4 | grep -v "sbin/httpd" | head -20
I can't comment yet, but to answer the question about how to reverse the order of a time sort, just put a minus sign (-
) in front of the field.
Example: ps -elf --sort=-start_time
Or try 'ls', as it allows time formats that are easy to sort, and easier to use.
( cd /proc; ls -td --full-time --time-style=+%s [0123456789]*; )
Outputs the date/time in epoch, newest procs at the top.
I know it's obsolete syntax, but I find it practical for brevity:
ps OT <other_options>
For example:
ps OT ax