tail -f 和 -F 參數的差別, 主要是差在 -f 如果在追蹤此檔案被移除重建了(ex: log rotate), 那就停止不會動了, 而 -F 會再重新 try 那個同檔名的那個檔案, 如果重建了, 會繼續追蹤此檔案, 不會因為檔案被 rotate 而就此停止追蹤.
對等命令參數: tail -F FILENAME
= tail --follow=name --retry FILENAME
(man 解釋: --retry: keep trying to open a file even if it is inaccessible when tail starts or if it becomes inaccessible later)
來做做實驗:
$1 代表 shell 1, $2 代表 shell 2.(當做分別開兩個視窗(shell))
- tail -f
$1 tail -f aa
$2 echo "ccc" >> aa
$1 ccc
$2 echo "ccc" >> aa
$1 ccc
$2 mv aa bb
$2 echo "ccc" >> aa
$1 => 不會動了
- tail -F
$1 tail -F aa (或 tail --follow=name --retry aa)
$2 echo "ccc" >> aa
$1 ccc
$2 echo "ccc" >> aa
$1 ccc
$2 mv aa bb
tail: 「aa」 has been replaced; following end of new file
$2 echo "ccc" >> aa
$1 ccc ($1 不會因為檔案 rotate 而停止追蹤此檔)
前段时间调试程序时遇到此问题,没想到tail都已经有这样贴心的功能了,日志分卷只能是重来一次tail -f,或者把分卷大小设置的更高,呵呵,tsung兄总让我很有惊喜,谢过:)
willis 過獎了 Orz...