Linux script to get most expensive processes

Thomas 'PointedEars' Lahn PointedEars at web.de
Wed Aug 5 06:56:02 EDT 2015


Cecil Westerhof wrote:

> Under Linux I like to get the most expensive processes. The two most
> useful commands are:
>     ps -eo pid,user,pcpu,args --sort=-pcpu
> and:
>     ps -eo pid,user,pcpu,args --sort=-vsize
> 
> In my case I am only interested in the seven most expensive processes.
> For this I wrote the following script.

Don’t.  Use

  ps -eo pid,user,pcpu,args --sort=-pcpu | head -n 8

or

  ps -eo pid,user,pcpu,args --sort=-pcpu | sed -n '2,8p'

and the like instead.  (procps ps(1) also has an output modifier to omit
the headers, but I could not get that to work with the sorting just now.

[Thanks for pointing out the “--sort” option of *procps* ps(1) 3.3.10.
I was not aware of it, and had used

$ alias cpu
alias cpu='ps -ww aux | sort -nk3 | tail'

instead.]
 
> ========================================================================
> #!/usr/bin/env python3
> 
> import subprocess
> import sys
> 
> 
> def give_output(param):
>     output = subprocess.check_output(([
>         'ps',
>         '--columns={0}'               .format(max_line_length),
>         '-eo',
>         'pid,user,start_time,{0},args'.format(param),
>         '--sort=-{0}'                 .format(param)
>     ])).splitlines()
> […]
> ========================================================================
> 
> Is this a reasonable way to do this?

No.

> Getting the parameter is done quit[e] simple, but I did not think fancy 
> was necessary here.

It is not.

-- 
PointedEars

Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.



More information about the Python-list mailing list