tail -f 和 -F 差異


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 而停止追蹤此檔)


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix。將永久鏈結加入書籤。

tail -f 和 -F 差異 有 2 則回應

  1. willis 說道:

    前段时间调试程序时遇到此问题,没想到tail都已经有这样贴心的功能了,日志分卷只能是重来一次tail -f,或者把分卷大小设置的更高,呵呵,tsung兄总让我很有惊喜,谢过:)

  2. Tsung 說道:

    willis 過獎了 Orz...

發表迴響