Jeff Pang am Samstag, 14. Januar 2006 12.52: > Thanks for Adriano.I have tried the way that mentioned by you,and found > it's no use for me. should the '-F' option have no effect for symlinks > maybe? > > -----Original Message----- > > >From: Adriano Ferreira <[EMAIL PROTECTED]> > >Sent: Jan 14, 2006 7:23 PM > >To: Jeff Pang <[EMAIL PROTECTED]>, beginners@perl.org > >Subject: Re: the 'tail' problem > > > >Jeff, > > > >Maybe all you have to do is make some adjustments to the pipe you're > >opening. Besides the well known "-f" switch, some tail's (like gnu > >tail) support "-F" which means a file is followed by its name and the > >opening is retried from time to time. From "man tail" (GNU): > > > > -F same as --follow=name --retry > > > > With --follow (-f), tail defaults to following the file > > descriptor, which means that even if a tail'ed file is renamed, tail will > > continue to track its end. This default behavior is not desirable > > when you really want to track the actual name of the file, not the file > > descrip- tor (e.g., log rotation). Use --follow=name in that case. That > > causes tail to track the named file by reopening it periodically to see > > if it has been removed and recreated by some other program. > > > >If you found it works for symlinks, all you have to do is use > > > >> open (TAIL,"tail -F $log|") or die "can't open pipe:$!"; > > > >Regards, > >Adriano Ferreira. > > > >On 1/14/06, Jeff Pang <[EMAIL PROTECTED]> wrote: > >> I have a log file which is a symbol link to the real logfile,shown as > >> following: > >> > >> I have to access this file in perl script with unix 'tail -f' > >> command.Part of the code is below: > >> > >> open (TAIL,"tail -f $log|") or die "can't open pipe:$!"; > >> > >> This script is a daemon script which run permanently.There is no problem > >> when in the same day.But when the date changed,the symbol link file will > >> point to another real logfile automatically (which decided by other > >> application program),such as: > > > >[snip] > > > >> How can I adjust this problem?Thanks a lot.
Hi After reading man tail I tested tail --retry --follow=name testlog where testlog is a symlink. While this command is running, I can do (from another console): rm testlog ln -s testlog1 testlog rm testlog ln -s testlog2 testlog It does what you want. Maybe File::Tail will also do what you want, just test it (and read the man) hth joe -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>