85

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 ?

7 Answers 7

118

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, 2009 at 9:50
  • 1
    start_time worked. lstart did not. RHEL Mar 6, 2015 at 5:22
  • 1
    how to I reverse the order?
    – Phu Nguyen
    Sep 26, 2016 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, 2017 at 22:28
  • 1
    @Stephane try this: watch "ps -ef --sort=start_time | grep -v kworker | tail"
    – Sekenre
    Jul 25, 2019 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, 2009 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, 2012 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 May 22, 2013 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, 2014 at 14:41
  • 2
    lstart did not work for me. start_time did. Mar 6, 2015 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, 2015 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, 2019 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.