Shell script to display top 5 process (per cpu consumption)

Hello,

I have to create shell script being myself real novice in scripting...
I was looking on the Internet for some script examples, but I don't have the basic understanding of the shell. I was trying to do something with �ps� command without success.
For exemple total number of running process: ps ax | wc -l | tr -d ""
Executed from command line work nice, but once in the script like echo �ps ax | wc -l | tr -d ""' return 1 which is not the right number of running process.

The script should do the following:

  • Should check the running processes
  • Display top five process (per cpu consumption)
  • output the summary for:
    [list]
  • total number of processes
  • number of process per user
  • most common process
    [/list]

ex.: process1
process2
process3
process1
result : process1

Is it too difficult to implement in pure bash script?

Many thanks in advance for any help.

Well, it depends a lot on what you are running...

On a HP server, using UNIX95 compliance, you would type to get the 5 most CPU consumer process type something like:

ant:/home/vbe $ UNIX95= ps -eo pcpu,pid,user,args | sort -r | head -5
15.95 12661 vbe      /opt/firefox/firefox-bin
 5.26 12694 vbe      /opt/Adobe/Acrobat7.0/Reader/hppahpux/bin/acroread --display 16
 1.24  2772 patrol   PatrolAgent
 1.10  2508 root     /opt/APPQcime/jre/bin/PA_RISC2.0/java -Djava.library.path=../li
 0.98 17873 root     /opt/perf/bin/midaemon

Thanks for your answer.
Server is running on ubuntu.
When I type the command in command prompt it format the output correctly. When executed from script like :
echo `UNIX95= ps -eo pcpu,pid,user,args | sort -r | head -5`
the output is formated in one line like this:
%CPU PID USER COMMAND 0.1 5162 root sshd: root@pts/1 0.0 7 root [khelper] 0.0 6 root [events/0] 0.0 5 root [watchdog/0]

Is there any formatting option or should'nt I use "echo"?

Do you have any idea for

  • number of process per user
  • most common process

Thanks