Pipe

是否有像“tee”這樣的命令來限製文件大小並將輸出文件視為固定大小的隊列?

  • July 1, 2017

是否存在可以執行以下操作的命令:

someprogram | tee --limit=1MB afile

其中“afile”將包含“someprogram”的最新 1 MB 輸出?

正是這樣,可能不是。一旦它預熱並填充了文件,它將重寫 1MiB- N字節的舊數據,以將它們沿文件打亂,對於它添加到緩衝區末尾的每*N字節的新數據。*這並不完全是一種理想的機制,而且在寫入文件時讀取文件很容易出現“撕裂”問題。

接近於此,存在許多命令。將文件數增加到 2,即目前文件及其前一個文件,以便在任何給定時間,一個文件都有 1MiB 到 2MiB 的最新輸出,一旦寫入,輸出就不會被複製;並且您擁有一大堆 daemontools-family 日誌記錄程序設計的東西。從本質上講,它們正是這種“tee加號”。

  • 來自 daemontools的 Dan Bernstein和來自 daemontools-encoremultilog的 Bruce Guenter :multilog
一些程序 | 多日誌 n2 s1048576 ./logdir/
  • s6-log使用來自 s6的 Laurent Bercot :
一些程序 | s6-log n2 s1048576 ./logdir/
  • svlogd來自 runit 的Gerrit Pape 的配置文件顯示n2 s1048576
一些程序 | svlogd ./logdir/
  • 韋恩·馬歇爾(Wayne Marshall)tinylog來自 perp:
一些程序 | tinylog -k 1 -s 1048576 ./logdir/
一些程序 | cyclog --max-file-size 1048576 --max-total-size 1048576 ./logdir/

進一步閱讀

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