Pipe
是否有像“tee”這樣的命令來限製文件大小並將輸出文件視為固定大小的隊列?
是否存在可以執行以下操作的命令:
someprogram | tee --limit=1MB afile
其中“afile”將包含“someprogram”的最新 1 MB 輸出?
正是這樣,可能不是。一旦它預熱並填充了文件,它將重寫 1MiB- N字節的舊數據,以將它們沿文件打亂,對於它添加到緩衝區末尾的每*N字節的新數據。*這並不完全是一種理想的機制,而且在寫入文件時讀取文件很容易出現“撕裂”問題。
接近於此,存在許多命令。將文件數增加到 2,即目前文件及其前一個文件,以便在任何給定時間,一個文件都有 1MiB 到 2MiB 的最新輸出,一旦寫入,輸出就不會被複製;並且您擁有一大堆 daemontools-family 日誌記錄程序設計的東西。從本質上講,它們正是這種“
tee
加號”。一些程序 | 多日誌 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
的nosh:一些程序 | cyclog --max-file-size 1048576 --max-total-size 1048576 ./logdir/
進一步閱讀
- 喬納森·德博因·波拉德 (2015)。“記錄”。 daemontools 家族。經常給出答案。
- 喬納森·德博因·波拉德 (2017)。不要使用
logrotate
或newsyslog
在本世紀。. 經常給出答案。- https://unix.stackexchange.com/a/326166/5132