Date: Mon, 18 Mar 2002 02:54:40 -0500 From: parv <parv_@yahoo.com> To: D J Hawkey Jr <hawkeyd@visi.com> Cc: freebsd-questions@freebsd.org Subject: Re: awk - any possibility of using a variable in regex Message-ID: <20020318075440.GA3810@moo.holy.cow> In-Reply-To: <20020317205228.A22100@sheol.localdomain> References: <20020317205228.A22100@sheol.localdomain>
next in thread | previous in thread | raw e-mail | index | archive | help
in message <20020317205228.A22100@sheol.localdomain>,
wrote D J Hawkey Jr thusly...
>
> My bad to reply to myself, but I remember I *do* have something like this,
> without the need for perl or awk:
...
> #!/bin/sh
>
> for i in ico mouseclock pyro xcursor xearth xfishtank xneko xroach; do
> killall -9 -u $LOGNAME -c $i 2>/dev/null
> done
that doesn't work here if a program is started w/ full path, say,
"/usr/X11R6/bin/xeyes" instead of "xeyes". from killall man page,
it seems that it should work, kind of ps -c output, but it doesn't.
perhaps a bug?
> #!/bin/sh
>
> TMP=/var/tmp/$0.$$
>
> teststop ()
> {
> [ `ps -aO ruser |egrep $LOGNAME.+$1 | grep -v grep | tee $TMP | wc -l` -eq 1 ] && kill -9 `cat $TMP | awk '{ print $1 }'`
> rm -f $TMP
> }
i was so intent on using awk to avoid two greps like above that i
missed the fact that i could have used variables w/ grep. thanks
much dave for the reminder.
below is the resulting script.
#!/bin/sh
user=${USER:-${LOGNAME}}
for proc in startx xinit # etc...
do
pids=$(ps -a -O ruser -c | egrep "${user}.+\<${proc}\>" | awk '!/grep/{ print $1 }')
#echo pids: $pids
[ x"${pids}" = x ] && continue
count=$(echo $pids | wc -l)
#echo count: $count
[ $count -eq 0 ] && continue
for pid in $pids
do
#echo killing pid: $pid
/bin/kill -SIGKILL $pid
done
done
# end
- parv
--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020318075440.GA3810>
