使用 Unix 尾部監視多個檔案可能無法按預期工作

由艾倫·馮,高級軟體工程師

"尾 -F"通常用於監視檔的更新。

以下是如何使用尾部同時監視多個檔。

$ 尾 -F 檔案1 檔案2

上述命令的問題是,寫入 file1 和 file2 的文本可能無法在新行邊界刷新到磁碟。因此,可以從尾輸出中從另一個檔中將一個文件的文本拼接成文本。

下面是問題的示例。假設以下內容寫入檔 1。

line_1
line_2
line_3

此外,假設以下內容寫入file2。

LINE_A
LINE_B
LINE_C

如果文本未在新行邊界處刷新,則可以從尾部獲取以下輸出。

lineLINE_A
_1
LINE_B
line_2
LINE_C
line_3

正如您所看到的,"LINE_A"被拼接成"line_1",導致第一行中的"lineLINE_A"。以下是解決上述問題的一些方法。

  1. 並行運行多個尾部,並將每個尾部的輸出管道到 grep。您需要使用 grep 中的選項才能僅在新行邊界上列印。

  2. 寫入新尾部,僅在從檔接收完整行時列印。

  3. 修改產生日誌檔的應用程式,僅創建單個日誌檔。您需要確保文本在新行邊界處刷新到單個檔。

下面是上面要實現的代碼 (1)。

$ vi multi-tail.sh
*!/bin/sh

• 當此退出時,也退出所有後台進程。
陷阱'殺死$(工作-p)'退出

• 走過每個指定的檔案名稱
檔在"$_"

  • 後台的尾部檔。
  尾部 -F $file |grep =行緩衝"" |

* 等待 . .直到 CTRL+C

我將留給讀者實現 (2) 和 (3)。

感謝您的閱讀!

About ShareThis

ShareThis has unlocked the power of global digital behavior by synthesizing social share, interest, and intent data since 2007. Powered by consumer behavior on over three million global domains, ShareThis observes real-time actions from real people on real digital destinations.

Subscribe to our Newsletter

Get the latest news, tips, and updates

Subscribe

Related Content