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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈tail -f 和 -F 差異〉中有 2 則留言

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

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料