The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
tail -f wannalearn Shell Programming and Scripting 4 04-10-2007 02:22 PM
tail command.. amon Shell Programming and Scripting 2 06-02-2006 01:36 AM
Help on scripting using tail jisc Shell Programming and Scripting 4 05-19-2006 12:15 AM
how to sed with tail redlotus72 UNIX for Dummies Questions & Answers 1 08-30-2005 02:27 AM
using tail -f cdunavent Shell Programming and Scripting 6 10-23-2002 02:10 PM

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 06-15-2006
Registered User
 

Join Date: Feb 2005
Location: Canada
Posts: 131
Tail??

Hello all,

I have search the forum and could not find an answer...Here is what I am trying to do. Every 15 minutes, a script send uptime output to a logfile (dailylog.log), that file contains lines like the one below:

Code:
11:21am  up 44 days, 19:15,  1 user,  load average: 0.00, 0.02, 0.03
Now, I am trying to extract only the before last line and send it to another file. The thing is that using tail -2 will show me the last 2 lines... I don't need that last line. The log is growing every 15 minutes so I don't know how many entries there are in the file.

Code:
echo $(tail -10 /dailyload.log)
Does anyone have a suggestion?
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 06-15-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 3,502
You want the next to the last line, right? And just the one line. And add the one line another file. Then wait 15 minutes and do it again?
Code:
while true
do
     tail -2 logfile | head -1 >>  anotherfile.log
     sleep 900
done
Reply With Quote
  #3 (permalink)  
Old 06-15-2006
Registered User
 

Join Date: Feb 2005
Location: Canada
Posts: 131
Tks Jim. Now what I do is putting the 13th argument of uptime command in a variable, the load, let's say 0.06 and now adding the last 24 hours load and doing an average of the total. Here is what I am trying to do:

Code:
#!/usr/bin/ksh
I_COUNT=96
C_CHAINE=0
until ((I_COUNT < 1))
do

tail -$I_COUNT /dailyload.log | head -1 | awk '{print $13}' > $C_CHAINE

#average
((C_CHAINE=C_CHAINE+$13))
((I_COUNT=I_COUNT-1))

done

((C_CHAINE=C_CHAINE/96))
echo $C_CHAINE
But can't make it work. Any idea?
Reply With Quote
  #4 (permalink)  
Old 06-15-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 3,502
It looks like you are taking the last 96 lines from the log and finding the mean of column 13.

Code:
tail -96 logfile | \
awk 'BEGIN { total=0 } { total+=$13 } END{ printf("Avg=%f\n", total/NR) }'
if I understood what you want.
Reply With Quote
  #5 (permalink)  
Old 06-16-2006
Registered User
 

Join Date: Feb 2005
Location: Canada
Posts: 131
That is exactlly what I am looking for. How could I get the highest load from the last 96 lines then?
Reply With Quote
  #6 (permalink)  
Old 06-16-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 3,502
Code:
tail -96 logfile | \
awk 'BEGIN { max=0 } { if($13>max){max=$13} } END{ printf("Max=%f\n", max) }'
Reply With Quote
  #7 (permalink)  
Old 06-16-2006
reborg's Avatar
Administrator
 
Join Date: Mar 2005
Location: Ireland
Posts: 3,503
It might however be better to count the colum from the right, rather then the left, because the time in uptime may not always contain the same numbert of fields.

Instead of $13 use $(NF-2)
Reply With Quote
Google UNIX.COM
Reply

Tags
load average, performance

Thread Tools
Display Modes




All times are GMT -7. The time now is 02:45 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0