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. ======================================================================== #!/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() for line in output[:no_of_lines]: print(line.decode('utf-8')) accepted_params = { 'pcpu', 'rss', 'size', 'time', 'vsize', } current_platform = sys.platform max_line_length = 200 needed_platform = 'linux' no_of_lines = 8 # One extra for the heading if current_platform != needed_platform: raise Exception('Needs a {0} platform, got {1} platform'. format(needed_platform, current_platform)) no_of_parameters = len(sys.argv) - 1 if no_of_parameters == 0: to_check = 'pcpu' elif no_of_parameters == 1: to_check = sys.argv[1] else: raise Exception('Too many arguments') if (to_check != 'all') and not(to_check in accepted_params): raise Exception('Used illegal parameter: {0}'.format(to_check)) if to_check == 'all': for param in sorted(accepted_params): give_output(param) print() else: give_output(to_check) ======================================================================== Is this a reasonable way to do this? Getting the parameter is done quit simple, but I did not think fancy was necessary here. -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list