Řešení 1:
Aha, na tohle je vlajka.
místo použití tail -f /var/log/file
měli bychom používat tail -F /var/log/file
tail -F
překládá do tail --follow=name --retry
jako v;
--follow=name
:místo popisovače souboru následujte název souboru--retry
:pokud je soubor nepřístupný, zkuste to znovu později místo umírání
Řešení 2:
# tail --follow=mylog.log
Z mužského ocasu :
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.
Takže v tomto případě pomocí -F
možnost by byla správná.
-F same as --follow=name --retry
Řešení 3:
Přesná odpověď závisí na vašem operačním systému – ale v mnoha případech tail -F
udělá správnou věc.
Řešení 4:
tail -For tail --follow=name
Řešení 5:
IMHO je trochu divné měnit soubor protokolu podle VELIKOSTI, nikoli podle data. Většina systémových protokolů (v unixu nebo linuxu) se otáčí na týdenní nebo měsíční bázi, nikoli na základě velikosti...To je něco, co se mi líbí z různých důvodů a také něco, co by v případě implementace vyřešilo váš problém.
O osm let později nevím, o čem jsem tu sakra mluvil:existuje spousta míst, kde chcete rotovat podle velikosti, protože denní/týdenní/měsíční rotace může vést k MASIVNÍM souborům, které mohou způsobit vážné problémy.
Ze zkušenějšího pohledu je skutečnou otázkou, proč byste chtěli sedět a neustále sledovat soubor, který roste tak rychle, že jej otáčíte více než denně... Bylo by to jako sledovat stream Matrixu.
V dnešní době by bylo lepší podívat se na nějakou agregaci protokolů velkých dat, jako je Splunk nebo Sumologic, kde může filtrovat události protokolu do tříd a spouštět na základě konkrétních hodnot protokolu... Není třeba vůbec sledovat živé protokoly.