Tail

tail -fa 文件 10 分鐘/直到 N 個匹配行?

  • February 26, 2022

我有一個日誌文件,我按如下方式處理:

grep pattern /var/log/whatever.log | \
   cut ... | sort | uniq -c | sort -rn | \
   etc....

但是,日誌文件很大,並且記錄了從一天開始的事件。它也不斷地附加。我只想處理最後的接下來 10 分鐘的文件。

所以我正在尋找類似以下的東西:

killafter 600 tail -f /var/log/whatever.log | stuff

或者,更好的是(等待擷取 1000 條匹配行所需的時間):

tail -f /var/log/whatever.log | grep pattern | stopafter -lines 1000 | stuff

有什麼工具可以讓我這樣做嗎?

roaima 正確地將您指向timeout命令,並head在讀取所需的行數後實際終止,所以我希望

timeout 600s tail -f ‹logfile› | ‹filter› | head -n 1000

你會到達那裡。

預設情況下,超時會終止程序並且管道會被終止。

timeout --foreground 600s tail -n 0 -f logfile | ...filter | head -n 1000| ...
  • timeout --foreground否則我們只會看到“終止”
  • tail -n 0 -f只顯示新的日誌
  • head -n 1000“在 1000 行後停止”

\謝謝{roaima 和 Ulrich Schwarz}

引用自:https://unix.stackexchange.com/questions/308829