Perl - immitate perpetual "tail"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl - immitate perpetual "tail"
# 1  
Old 08-20-2007
Perl - immitate perpetual "tail"

Is there some way I can have a script monitor the newest line of a log file until a certain entry gets placed in the log?

Basically I want to start this script, and have it spit up the last 10 lines or so to a browser via AJAX... the AJAX is not my problem though, as I have no idea how to go about perpetually getting the last line of a log... without being a resource hog that is.

I figure it looks something like this:
Code:
start_log-checker();
start_log-generating-app();

start_log-checker() {
    while($log_line ne "Done!") {
        if ($@array < 10) { 
            unshift(@array, $log_line);
        } else {
            pop(@array);
            unshift(@array, $log_line);
        }
        upstream_to_browser(@array);
    }
    if ($log_line eq "Done!") upstream_to_browser(@array);
}

Any help?
# 2  
Old 08-20-2007
Quote:
Originally Posted by jjinno
as I have no idea how to go about perpetually getting the last line of a log... without being a resource hog that is.
popen tail?
# 3  
Old 08-22-2007
From what I can see, there is no such thing as "popen tail" in Perl...

I mean I can backtick or qx the actual command that writes the log in the first place, but that would give me the whole log in a Perl variable, and all I care about is one line at a time - the last line.
# 4  
Old 08-22-2007
Quote:
Originally Posted by porter
popen tail?
I followed the hint, and found a CPAN introduction to using piped opening of files... I'm still wandering aimlessly, but I think I am in the right direction
# 5  
Old 08-23-2007
I have an impression that you can try to use seek() available in Perl to first move the cursor to the last 500 bytes of the file (), and then read the 500 byte block to check whether that already has 10 lines as needed, if not, go back by a further 500 byte block (now 1000 bytes) until you get 10 lines. It is likely faster than having to read the entire file head to toe if your log file is very very long, although you only keep the last 10 lines during the scan.

I guess that is how tail is implemented but I'm not sure. There is no way to be fast if you have to move the file pointer in a gigantic file from head to toe.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Shell Programming and Scripting

Perl failure with "main::$fn" used only once:" in error logs

Hi all, Can anyone guess why this is happening? I am new to Perl, so please help me to fix this error: - I have a static html file which calls the cgi-perl script. HTML Code: <html> <head> <title> Hey Dude! </title> </head> <body> <form method="POST"... (3 Replies)
Discussion started by: bashily
3 Replies

5. UNIX for Dummies Questions & Answers

"tail -n 1 filename" error while "head -n 1 filename" is ok?

Hi all, I was wondering why tail -n 2 filename produce an error when I manage to do similar command on head -n 2 filename SunOS{type8code0}: tail -n 2 filename usage: tail ] tail ] (2 Replies)
Discussion started by: type8code0
2 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

perl folder list with "..", without ".".

Hi Everyone, if my folder "foldera" inside has one file. so if i do if ($df =~ /^\./) { next; } then i will get ### filea ### if i want to have ### .. filea ### means also display the parent .., how should i modify the perl ~// in my code? Thanks ---------- Post updated... (6 Replies)
Discussion started by: jimmy_y
6 Replies

8. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

9. Shell Programming and Scripting

script not working after "tail -f"

Hi Everyone , I am facing a strange problem i have made the follwing script to watch a appending log file (abc.log) but its not moving after the line tail -f , any suggestions ===================================== #!/bin/bash while true do tail -f abc.log | grep "exceptions" echo hi... (12 Replies)
Discussion started by: xander
12 Replies
Login or Register to Ask a Question