
次のことができるコマンドはありますか?
someprogram | tee --limit=1MB afile
ここで、「afile」には「someprogram」の最新の1MB出力が含まれていますか?
答え1
まさにそうではありません。ウォームアップしてファイルがいっぱいになったら、1MiBを書き換えます。窒素バイトの古いデータをファイルに沿って混合します。窒素バッファの末尾に新しいデータバイトが追加されます。これは完全に理想的なメカニズムではなく、ファイルの書き込み中にファイルを読み取ると「破れ」の問題が発生しやすいです。
これに近い多くのコマンドが存在します。現在のファイルと前のファイルの数を2つに増やすと、いつでも最新の出力の1MiB〜2MiBがあり、出力は一度作成された後にコピーされず、完全なdaemontoolsシリーズを持つようになります。ログプログラムは機能を完了するように設計されています。本質的に、彼らは単に「tee
プラス」です。
- ダンバーンスタインと
multilog
daemontoolsとBruce Guenterによる投稿multilog
daemontools-encoreから:特定のプログラム|マルチログn2 s1048576 ./logdir/
- ローランベルコと
s6-log
s6から:特定のプログラムs6-log n2 s1048576 ./logdir/
- ゲレットペプの
svlogd
runitの設定ファイルは次のとおりですn2 s1048576
。いくつかのプログラムsvlogd ./logdir/
- ウェインマーシャル
tinylog
犯罪者から:特定のプログラム |tinylog -k 1 -s 1048576 ./logdir/
- そして私
cyclog
ノッシュから:特定のプログラムcyclog -- 最大ファイルサイズ 1048576 -- 最大フルサイズ 1048576 ./logdir/
追加読書
- ジョナサンデボインポラード(2015)。 」記録」。 デーモンツールシリーズ。よく与えられる答えです。
- ジョナサンデボインポラード(2017)。今世紀にはまたはを使用しないでください
logrotate
。newsyslog
。よく与えられる答えです。 - https://unix.stackexchange.com/a/326166/5132
答え2
必要な作業を正確に実行するユーティリティがパッケージにありますapache2-utils
。rotatelogs
要約:
ログの回転 [ -l ] [ -Lリンク名][-pプログラム] [ -f ] [ -t ] [ -v ] [ -e ] [ -c ] [ -nファイル数] ログファイル回転時間|ファイルサイズ(B|K|M|G) [オフセット]
完全なマニュアルを読むことができます。このリンク。