shell script to count httpd processes

Steve Kozakoff kozaksj at shands.ufl.edu
Mon Mar 14 22:21:38 UTC 2005


I would recommend looking for the full path, in case (like me) you have
other things with the string "httpd" in the name.

for i in `ps -afe | grep /usr/sbin/httpd | grep -v grep | awk '{print
$2}'`
do
        COUNT=$((COUNT+1))
done
echo $COUNT

(Another) Steve

>>> steve at ibapp.com 3/14/2005 15:35:03 >>>
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


-- 
redhat-list mailing list
unsubscribe mailto:redhat-list-request at redhat.com?subject=unsubscribe 
https://www.redhat.com/mailman/listinfo/redhat-list




More information about the redhat-list mailing list