tail -f helyett tail -F

fyi, 14.04 terminálban a tail -f egy idő után nem ír ki semmit.

update:
ezzel hagyja abba, /var/log/syslog esetén. cron.log ment tovább.

read(3, "", 8192)                       = 0
read(4, "\1\0\0\0\0\10\0\0\0\0\0\0\0\0\0\0", 32) = 16
inotify_rm_watch(4, 1)                  = 0
read(4, "\1\0\0\0\0\200\0\0\0\0\0\0\0\0\0\0", 32) = 16
read(4, 

nahát, rotálás megfogja. 20:24 az utolsó kiírás tail által, ami egybeesik.

-rw-r-----  1 syslog adm       3346 máj   19 20:33 syslog
-rw-r-----  1 syslog adm     267033 máj   19 20:24 syslog.1

update2, tail -F:

tail: ”/var/log/syslog” elérhetetlenné vált: Engedély megtagadva
tail: ”/var/log/syslog” elérhetővé vált
May 20 21:03:34  rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="925" x-info="http://www.rsyslog.com"] rsyslogd was HUPed

bővebben:


read(3, "", 8192)                       = 0
read(4, "\1\0\0\0\0\1\0\0\0\0\0\0\20\0\0\0syslog.1.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\4\0\0\0\0\0\0\0\20\0\0\0syslog.1.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\4\0\0\0\0\0\0\0\20\0\0\0syslog.1.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0J\4\0\0\20\0\0\0syslog.6.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0K\4\0\0\20\0\0\0syslog.5.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0L\4\0\0\20\0\0\0syslog.4.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0M\4\0\0\20\0\0\0syslog.3.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0N\4\0\0\20\0\0\0syslog.2.gz\0\0\0\0\0", 32) = 32
read(4, "\1\0\0\0\200\0\0\0O\4\0\0\20\0\0\0syslog.1\0\0\0\0\0\0\0\0", 32) = 32
read(4, "\2\0\0\0\0\10\0\0\0\0\0\0\0\0\0\0", 32) = 16
open("/var/log/syslog", O_RDONLY|O_NONBLOCK) = 5
fstat(5, {st_mode=S_IFREG|0640, st_size=0, ...}) = 0
fstatfs(5, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=107548654, f_bfree=56896174, f_bavail=55799113, f_files=27328512, f_ffree=27101077, f_fsid={697267788, 15462011}, f_namelen=255, f_frsize=4096}) = 0
close(3)                                = 0
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffc3b820000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7ffc3b820000, 4096)            = 0
open("/usr/share/locale/hu/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/hu/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=363738, ...}) = 0
mmap(NULL, 363738, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ffc3b7aa000
close(3)                                = 0
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0
mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x7ffc3b81a000
close(3)                                = 0
write(2, "tail: ", 6tail: )                   = 6
write(2, "\342\200\235/var/log/syslog\342\200\235 helyettes\303"..., 87”/var/log/syslog” helyettesítésre került; a program az új fájl végét követi) = 87
write(2, "\n", 1
)                       = 1
lseek(5, 0, SEEK_SET)                   = 0
read(4, "\1\0\0\0\0\1\0\0\0\0\0\0\20\0\0\0syslog\0\0\0\0\0\0\0\0\0\0", 32) = 32
inotify_add_watch(4, "/var/log/syslog", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 3
open("/var/log/syslog", O_RDONLY|O_NONBLOCK) = 3

azonban ez engem nem elégít ki, nem akarok -F-et használni ;) inkább átállítom a syslogot, hogy ne dátum, hanem méret alapján rotáljon.

Hozzászólások

Melyik terminalban? Gnome-Terminal? "Melykonzol"?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

az durva lenne, hogy egy ideig megy aztán nem (sub)

Beindult a végtelen valószínűtlenségi hajómű, eelnök úr? :)

Adnál egy tesztelhető példát? Pl: tail -f /var/log/messages aztán ki-be rángatom a pendrive-ot, és egy idő után nincs nyoma, vagy mi?

syslogot és cron.log-ot nézem, 15 percenként saját anacron, aminek van két dailyje, illetve ehhez képest eltolva 15 percenként egy másik cron job, plusz az átlagos syslog. tegnap egy órát néztem systrace tail -f /var/log/cron.log, ekkor nem állt meg. de előtte 2x is előfordult.

ps.: az egy idő az kb több mint fél óra.

Hm. Mintha közbejött volna egy logrotate...
Ami úgy működik, hogy a régit átnevezi, az átnevezettnek megmarad az inode-ja, a tail -f azt tartja nyitva, viszont oda többé senki sem ír.
Legalábbis a dátumokból olyan, mintha...

update: nem láttam, hogy te is észrevetted vagy egyszerre írtuk? :)
(ezt pl. utálom, de nagyon a drupalban és az összes hasonló rendszerben... semmi nyoma, hogy mikor módosul egy-egy téma és annak sem, hogy mi változott :( )

Tervezett működés. A megoldáshoz lásd:

tail --follow=name --retry

. (Rövidebben

tail -F

.) A man page helyett az

info tail

-t ajánlom magyarázatként.

No akkor mehet a [megoldva, pebkac] a címébe. Ennek, ahogy lacos is írta, így kell történnie, hisz abba a fájlba a továbbiakban már senki nem ír.

Csak ovatosan azzal a pebkaccal. Ez a viselkedesmod viszonylag uj, valoszinuleg a 13.x-es agon lehetett bevezetve, vagy teljesen uj a 14.04-ben ugyanis a 12.04-es tail meg zokszo nelkul atvalt az uj fajlra, ha siman csak kis f-fel hivom is meg.

Nem biztos, hogy annyira trivialis, hogy egy evek ota mukodo behavior egyszer csak megvaltozik.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Nem tudom, nekem csak nagy ritkan van ilyen esetem, ott altalaban a logfajlbol tomoritveny keszul, majd shrinkelodik, maga a file es az inode-ja nem valtozik meg. Hogy a Linuxos logrotate hogy mukodik, azt nem tudom, meg nem sikerult olyan logot figyelnem ennyi ideig, amit a logrotate kezel, de eddig azt felteteleztem, hogy valami hasonlokeppen.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

# tail --version
tail (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor,

De kicsit feljebb konkretizaltam, mire gondolok.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.