使用 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)。

感謝您的閱讀!

關於 ShareThis

ShareThis 自 2007 年以來,通過綜合社會共用、興趣和意圖數據,解鎖了全球數位行為的力量。受全球超過300萬個功能變數名稱的消費者行為推動, ShareThis 觀察真實人員在真實數位目的地上的即時操作。

訂閱我們的時事通訊

獲取最新消息、提示和更新

訂閱

相關內容