awk question

Derek Ragona derek at computinginnovations.com
Wed Apr 11 14:30:03 UTC 2007


At 07:43 PM 4/10/2007, Gary Kline wrote:
>On Tue, Apr 10, 2007 at 06:35:33PM -0500, Derek Ragona wrote:
> > At 06:17 PM 4/10/2007, Gary Kline wrote:
> > >On Mon, Apr 09, 2007 at 06:54:07PM -0700, Rick Olson wrote:
> > >> I'm assuming you've already taken care of this, but to answer your
> > >> original question in AWK form, you could have done the following:
> > >>
> > >> ls -l | awk '$8 == 2006 {system("rm " $9)}'
> > >>
> > >
> > >        i'Ll save your snippet to my growing %%% awk file in my ~/HowTo,
> > >        thankee much.  I'm in the first stages on a months-long trial on
> > >        system tuning.  This, before I'd risk publishing anything.  So
> > >        far tho, by upping and lower the NICE prio of various binaries, I
> > >        have been able to get more than 70% efficient use out of my older
> > >        servers.  ---This *ought* to carry over to my faster machines....
> > >
> > >        Is tthere a way of using ps -alx | ask to look at nice and if it
> > >        is non-zero (the default), to reset it to zero?
> >
> > You can easily do some of this using top, such as:
> > top -bS 200 | tail -n +9 | awk '{ print $5 }'
> >
> > If you want to tweak the nice value you'd need to examine the value and
> > then renice it as long as you are root.  You'd need the PID for that, so
> > here's another example:
> > top -bS 200 | tail -n +9 | awk '{ printf("Pid: %d has Nice: %d\n", 
> $1,$5) }'
> >
>
>         Well, I knew there had to be a "static" way to read top.  -bS is
>         it.  If NICE is 9, then renice-n -9 pid ought to reset it to 0;
>         so in C, the check for nice or "n" would be trivial:
>
>         if (n != 0)
>                 n = -n;
>
>         In you example, would this be if ($1 != 0) $1 = -$1;
>         then a '{system("renice -n $")};
>         or is this disallowed in awk?
>
>         gary

It is easier to redirect the output to a file then just execute that 
file.  You'd usually have this in a shell script run by cron.

top -bS 200 | tail -n +9 | awk '{ if ($1 != 0) printf("/usr/bin/renice %d 
%d\n", $1,-$5) }' > /tmp/renice.scr
sh -c /tmp/renice.scr

But look at the file generated, you need to do more than just the check for 
0 and then negate it.

         -Derek

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
MailScanner thanks transtec Computers for their support.



More information about the freebsd-questions mailing list