Break out of tail -f


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Break out of tail -f
# 1  
Old 03-11-2013
Break out of tail -f

Hi,

I have a requirement to monitor a srver log file realtime for a word 'Started'. Once found, I invoke another program tp perform additional processing.

The code below meets my requirement.

Code:
tail -f nohup.out | \
while read line ; do
echo "$line" | grep -i "Started"
if [ $? = 0 ]
then
java AAA.jar $1 $2 >>../AAA/logs/$3
break
fi
done

However, I have another script that has the exact code which greps for 'Shutdown' in the same file 'nohup.out'. This does not capture the word and shutdown does not complete entirely.

Is it because the tail -f command is still open? How can i avoid this?

Thanks.

Last edited by Corona688; 03-11-2013 at 05:09 PM..
# 2  
Old 03-11-2013
Well, tail -f can be a problem to manage, but the file is the file. Data can get hung up in the pipe, too. Shell can find strings without calling grep, using case. Logs can be written in blocks from a FILE* buffer. You could poll and just tail a big hunk of file. You could figure how many lines you have checked and just check up-file of there. Really economical and efficient solutions would be in C, where you can mmap() the file as it growns and monitor the content with low overhead just in areas not already checked.
# 3  
Old 03-11-2013
Thanks Pickett. To add more clarity to my query, I only need to look for the word once.

The file 'nohup.out' starts of as an empty file everytime the startup script is executed. Once the word 'STARTUP' is found in the file, AFTER the FIRST OCCURENCE, I no longer need to monitor the file. I can STOP READING the file. --> essentially break out of tail -f , if there is such a thing.

Is there?

Thanks.
# 4  
Old 03-11-2013
Well, tail -f will die when it discovers it cannot write, once it has something to write, and that is situational. I cannot predict the latency in the pipe.

Quiet grep -q would tell you if it found it and end when it did.
# 5  
Old 03-11-2013
Maybe something like this, if I understand correctly:

Code:
while sleep 10; do
  grep STARTUP nohup.out > temp.x
  lines=`wc -l temp.x`
  if [ $lines -gt 1 ]; then
    echo STARTUP occured twice in nohup.out
    # Do whatever needs doing
  fi
done

# 6  
Old 03-11-2013
Wouldn't it make much more sense, esp. as both scripts are managed by you, to write one single script that intercepts both keywords and triggers the respective reaction?
# 7  
Old 03-12-2013
Maybe some like this
Code:
tail -f nohup.out | awk '/Started/ {system(do something)}'

If your log does rotate, use:
Code:
tail --follow name nohup.out

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Tail +

because the tail +2 on the first line gives me the file name pomga I do not want anything like what I miss tail +2 ejemplo.txt ouput ==> ejemplo.txt <== 1 2 3 4 5 6 7 8 9 10 (2 Replies)
Discussion started by: tricampeon81
2 Replies

2. Shell Programming and Scripting

Joining multiple files tail on tail

I have 250 files that have 16 columns each - all numbered as follows stat.1000, stat.1001, stat.1002, stat.1003....stat.1250. I would like to join all 250 of them together tail by tail as follows. For example stat.1000 a b c d e f stat.1001 g h i j k l So that my output... (2 Replies)
Discussion started by: kayak
2 Replies

3. Shell Programming and Scripting

BASH: Break line, read, break again, read again...

...when the lines use both a colon and commas to separate the parts you want read as information. The first version of this script used cut and other non-Bash-builtins, frequently, which made it nice and zippy with little more than average processor load in GNOME Terminal but, predictably, slow... (2 Replies)
Discussion started by: SilversleevesX
2 Replies

4. Shell Programming and Scripting

break: cannot break

hi guys I am working on a menu for linux... some basic stuff. but I have an issue. I got 1 server where something is working and the same thing does not work in the same way in another linux box Basically I am simulating a command line where user insert some commands and to end and go back... (7 Replies)
Discussion started by: karlochacon
7 Replies

5. Shell Programming and Scripting

help on page break

Hi, i have a file say samp.s which has 123 a b c d 123 e f g h 123 i j k l 123 m n o p 234 a b c d 234 e f g h 234 i j k l the first 3 characters in each line are considered the key values i have one more file temp.txt which has 123 234 i want to have a page break in... (5 Replies)
Discussion started by: Sheema
5 Replies

6. Shell Programming and Scripting

break out of 'if'

is it possible? because i still need to keep on reading even though i don't want to read that particular line (7 Replies)
Discussion started by: finalight
7 Replies

7. HP-UX

Break mirror so that it can be used later

Hello again, We need to install patches to HP-UX B.11.11 but would like to break the mirror it has (with out damaging it) so that in case of failure we can use this a meassure procedure. Any ideas on how to do this Thank you! (2 Replies)
Discussion started by: AQG
2 Replies

8. Shell Programming and Scripting

tail -f

I am trying to extract a particular line from a.log which keeps appending every sec and output that into a newfile b.log which should append itself with filtered data received from a.log I tried tail -f a.log |grep fail| tee -a b.log nothing in b.log tail -f a.log |grep fail >>b.log ... (4 Replies)
Discussion started by: wannalearn
4 Replies

9. Shell Programming and Scripting

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: 11:21am up 44 days, 19:15, 1 user, load average: 0.00, 0.02, 0.03 ... (7 Replies)
Discussion started by: qfwfq
7 Replies

10. Shell Programming and Scripting

using tail -f

Working in HP-UX 10.20. I eventually want to write a bourne shell script to handle the following problem, but for now I am just toying with it at the command line. Here's what I am basically trying to do: tail -f log_X | grep n > log_Y I am doing a tail -f on log_X . Once it sees "n", I... (6 Replies)
Discussion started by: cdunavent
6 Replies
Login or Register to Ask a Question