Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Sep 2013 22:05:16 -0700
From:      Gary Kline <kline@thought.org>
To:        Matthew Seaman <m.seaman@infracaninophile.co.uk>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: howto kill x if x is running?
Message-ID:  <20130916050516.GA21243@ethic.thought.org>
In-Reply-To: <52355A11.7040808@infracaninophile.co.uk>
References:  <20130915062046.GA12535@ethic.thought.org> <52355A11.7040808@infracaninophile.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Organization: Thought Unlimited.  Public service Unix since 1986.
Of_Interest: With 27 years  of service  to the  Unix  community.

On Sun, Sep 15, 2013 at 07:56:17AM +0100, Matthew Seaman wrote:
> On 15/09/2013 07:20, Gary Kline wrote:
> 
> > 	I've evidently had too many pain meds; this shelll script should 
> > 	be easy.  say that I have a utility xxx running sometimes.  xxx is
> > 	soaking up a chunk of my load.  I have to use top to find if
> > 	xxx is running, then kill -9 to kill xxx and have a steady load of,
> > 	say, between 0.10 and 0.15.  what's the script that can do this?
> 
> The classic answer to this is that you need to find the pid of your
> 'xxx' process, and then kill it using that.  Some combination of ps(1)
> and grep(1) usually sufficed.
> 
> However nowadays there's the very handy pkill(1):
> 
>     pkill -9 xxx
> 
> Tying that in with the trigger based on system load:
> 
>     #!/bin/sh
> 
>     load=$(sysctl vm.loadavg | cut -d ' ' -f 3)
>     too_high=$(bc -e "$load > 0.15" < /dev/null)
> 
>     if [ $too_high = '1' ]; then
>         pkill -9 xxx
>     fi
> 
> Note the use of bc(1) to compare floating point values -- the built-in
> $((shell arithmetic)) or expr(1) only do integer arithmetic.
> 
> One final point -- instead of killing the xxx process when the load gets
> too high, you could simply renice(1) it to very low priority.  Or even
> better, use idprio(1).
> 
> This won't actually affect the system load values much as 'system load'
> is an average of the number of processes requesting a CPU time slice.
> What it does do is mean that your 'xxx' process is always pretty much
> the last process to get any CPU time -- so everything else should remain
> responsive, and your xxx process will only run when the system is
> otherwise idle.
> 
> 	Cheers,
> 
> 	Matthew


	thanks very much, gents.  no, it wasnt my med; it was that I slept
	ttoo much:: Old age.  "pkill -9 utility"  works.  the 0.15 or 0.10
	were arbitrrary.  the default load adverage should be even less
	since the box is just sitting here!  ...well, it's replying to 
	lookup, I suppose.  tx again, 

	gary


> -- 
> Dr Matthew J Seaman MA, D.Phil.
> 
> PGP: http://www.infracaninophile.co.uk/pgpkey
> JID: matthew@infracaninophile.co.uk
> 



-- 
 Gary Kline  kline@thought.org  http://www.thought.org  Public Service Unix
             Twenty-seven years of service to the Unix community.
                            http://www.thought.org/HOPE





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130916050516.GA21243>