Your ps
command should work if you sort it properly. From man ps
:
--sort spec
Specify sorting order. Sorting syntax is
[+|-]key[,[+|-]key[,...]]. Choose a multi-letter key from the
STANDARD FORMAT SPECIFIERS section. The "+" is optional since
default direction is increasing numerical or lexicographic
order. Identical to k. For example: ps jax --sort=uid,-ppid,
+pid
I'm not sure which time you want to sort by but here are the relevant choices:
STANDARD FORMAT SPECIFIERS
bsdtime TIME accumulated cpu time, user + system. The display
format is usually "MMM:SS", but can be shifted to
the right if the process used more than 999
minutes of cpu time.
cputime TIME cumulative CPU time, "[DD-]hh:mm:ss" format.
(alias time).
etime ELAPSED elapsed time since the process was started, in
the form [[DD-]hh:]mm:ss.
etimes ELAPSED elapsed time since the process was started, in
seconds.
I think from your question that you want cputime
. If so, this should give you your desired output:
ps -eo pid,user,args,etime,time,%cpu --sort cputime | grep -v root
Best Answer
Why use
ps
when you can do it easily with thetop
command?If you must use
ps
, try this:If you want something that's truly 'top'esq with constant updates, use watch