shell script to count httpd processes

Steve Buehler steve at ibapp.com
Mon Mar 14 20:35:03 UTC 2005


At 01:43 PM 3/14/2005, you wrote:
> > I am trying to create a shell script with /bin/sh that will
> > count how many httpd processes are running at the time.
> > This is how it would look as a perl script:
> > ---start of script---
> > #!/usr/bin/perl
> > $count = 0;
> > @hits = (`ps -afe | grep httpd | grep -v grep`);
> >    foreach $entry (@hits) {
> >      $count++;
> > }
> > print "$count\n";
> > ---end of script---
> >
> > I am trying to do this in an sh script.  Partly for learning
> > partly because I want to do some other things to, but can
> > only know how to do them in a shell script.  Any help would
> > be greatly appreciated.
>
>The following shell script should do the trick:
>
>--- start of script ---
>#!/bin/bash
>
>COUNT=`ps -aef | grep httpd | grep -c -v grep`
>
>echo $COUNT
>--- end of script ---
>
>If the reason for your question is to understand how to use a for loop, the
>following script will also work:
>
>--- start of script ---
>#!/bin/bash
>PROCIDLIST=`ps -aef | grep httpd | grep -v grep | awk '{print $2}'`
>for PROCID in $PROCIDLIST
>do
>         COUNT=$((COUNT+1))
>done
>
>echo $COUNT
>--- end of script
>
>Please note there is another syntax for the 'for' command, which looks like
>the following:
>----
>for (( statement1;  statement2;  statement3))
>do
>         statement block
>done
>----
>The above 'for' syntax works like the 'for' statement in C.

Steve, Brian and Michael.
         Thank you all for your responses.  I had tried the wc -l option 
and couldn't get it to work.  Figured it was because it was for files.  It 
was just because I tried it in every way but the correct way.
Michael
         You gave me just what I was looking for.  A little knowledge of 
the for loop.  Was hoping for a loop that would actually count the lines 
and not the words though.  But your awk command helped me there.  I will 
continue hunting for an answer to my "learning question" where I am just 
trying to find out how to count whole lines in a shell script 
variable.  with a loop internally to the script without the wc command.
Thanks
Steve





More information about the redhat-list mailing list