-1

I want to write a script where in i can kill the top processes and run this script for every 5 minutes.How to extract parameters from top command

2
Contributors
8
Replies
9
Views
8 Years
Discussion Span
Last Post by kranny
0

What are the "top processes"? Highest CPU time, most memory usage, most disk IO?

m sorry..i meant top cpu usage processes

0

I guess something like this will work:

sk@svn:~$ ps axu | grep -v ^USER | sort -k10 -r | head -n 5
root      4045  0.0  0.2   6428  1392 ?        Ss   Aug11   0:20 /usr/sbin/nmbd -D
root      4293  0.0  0.0      0     0 ?        S<   Aug11   0:19 [smbiod]
sk       18362  0.0  0.3   8180  1720 ?        S    Aug29   0:09 sshd: sk@pts/0
root      2246  0.0  0.0      0     0 ?        S<   Aug11   0:09 [kjournald]
root      4085  0.0  0.1   2332   908 ?        Ss   Aug11   0:04 /usr/sbin/cron
sk@svn:~$ ps axu | grep -v ^USER | sort -k10 -r | head -n 5 | awk '{ print $2 }'
4045
4293
18362
2246
4085
sk@svn:~$ ps axu | grep -v ^USER | sort -k10 -r | head -n 5 | awk '{ print $2 }' | xargs echo kill -9
kill -9 4045 4293 18362 2246 4085

FYI this seems like a very bad idea. You could render your system useless if you kill the wrong process. The codes I posted above also depends on how your ps renders the data (linux, fbsd, unix, etc) so be sure to test.

I'm sure Salem will be along with a more graceful solution :)

0

oh thanks..what does the k switch of sort do exactly?

Edited by kranny: n/a

0

Sorts on the column -- in this case k10 is the cpu-time column. see `man sort`.

Please mark this thread as solved if you have found an answer to your original question and good luck!

0

Sorts on the column -- in this case k10 is the cpu-time column. see `man sort`.

Please mark this thread as solved if you have found an answer to your original question and good luck!

what i meant to ask was wat does 10 denote here....is it that the CPU column started at 10th character position

0

It means the 10th column of data delimited by white spaces, not literally the 10th character from the left.

sk:~# ps axu | grep ^USER | sort -k10 -r
{1}USER       {2}PID {3}%CPU {4}%MEM    {5}VSZ   {6}RSS {7}TTY      {8}STAT {9}START   {10}TIME {11}COMMAND
0

It means the 10th column of data delimited by white spaces, not literally the 10th character from the left.

sk:~# ps axu | grep ^USER | sort -k10 -r
{1}USER       {2}PID {3}%CPU {4}%MEM    {5}VSZ   {6}RSS {7}TTY      {8}STAT {9}START   {10}TIME {11}COMMAND

So 3 should suffice my needs and also numeric sorting doesnt work correctly with sort unless a -g switch is used..So slightly modified cmd wud be
ps aux|sort -k 3 -g -r|head -n 6|awk '{awk print $2}'

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.