79

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 ?

112

This should work on Linux and SysV5

ps -ef --sort=start_time
9
  • This works exactly as requested, thanks. After more digging I am not sure this is possible on Mac OS without a bit of awk – Dean Smith Jun 18 '09 at 9:50
  • 1
    start_time worked. lstart did not. RHEL – Felipe Alvarez Mar 6 '15 at 5:22
  • 1
    how to I reverse the order? – Phu Nguyen Sep 26 '16 at 11:30
  • 2
    @PhuNguyen bit late to the party, but maybe someone else has a use for this. You can reverse the order by piping the output through tac. – Paul Oct 23 '17 at 22:28
  • 1
    @Stephane try this: watch "ps -ef --sort=start_time | grep -v kworker | tail" – Sekenre Jul 25 '19 at 10:37
12

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started
6
  • 3
    I'm afraid neither of those sorts by start time. It does display the start time, but doesn't sort. – Dean Smith Jun 18 '09 at 9:45
  • 4
    The difference between lstart and start_time caught me out as well -- 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. – LHMathies Apr 5 '12 at 8:22
  • time within last hour: if a process was launched yesterday at a time later than today, it will appear after today's process ... can't be used by sort, unless a bit of "awk" changes that – Olivier Dulac May 22 '13 at 10:16
  • @OlivierDulac: not for me. 15/12 15:40 appears before 16/12 15:39, just as 13:39 appears before 15:38. – Gauthier Dec 16 '14 at 14:41
  • 2
    lstart did not work for me. start_time did. – Felipe Alvarez Mar 6 '15 at 5:21
5

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
1
  • --sort of ps does not work for me. Relying on shell sort. +1 – kellogs Jan 25 '15 at 11:32
4

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

2

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.

1
  • this only shows the pids – elig Aug 11 '19 at 5:07
1

Try simple command:

ps | sort -k7 -n

-k7 for the time column and -n for numeric.

Example

0

I know it's obsolete syntax, but I find it practical for brevity:

ps OT <other_options>

For example:

ps OT ax

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.