ログローテート:ポストローテートで出力ファイルにアクセスする方法


15

Nginx毎日ログをローテーションします(でdateext)。ローテーションの後、過ぎた日のファイルを解析し、Nginxサーバーから返されたエラーの数を記載したメールをコンパイルします。

postrotate / endscriptセクションの出力ファイルにアクセスするにはどうすればよいlogrotateですか?


もっと詳しく説明していただけますか?
カレド

できた 申し訳ありませんが、十分に明確だと思いました。:)
ibz

回答:


4

それがあなたが探しているものである場合、私はあなたが使用できる変数を知りません。ただし、ログをローテーションした直後には、ローテーションに設定した構成などに基づいて、ファイルのローテーション先の名前を正確に知る必要があります/var/log/somefile.1

おそらく、解決しようとしている実際の問題を説明しておけば、答える方が簡単でしょうか?


問題は関係ないと思いました。今より詳細に説明しました。はい、日付を使用してファイル名を取得できますが、変数または何かを介して取得できることを望んでいました。
ibz

3
larsksがまさにあなたが望むものにヒットしたように見えます。$ 1は探している変数です。
マーク

17

「sharedscripts」ディレクティブを使用していない場合、ポストローテーションスクリプトは、ログローテーションをトリガーしたファイルを$ 1として受け取ります。これは、複数のlogrotateスタンザで汎用スクリプトを使用しようとしている場合に役立ちます。つまり、次のようなものが与えられます:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

一致するファイルをローテーションする必要がある場合、スクリプトは$ 1を「/var/log/sample1.log」、「/var/log/sample2.log」、または「/var/log/sample3.log」に設定して呼び出されます" 適切に。その後、「。1」を追加して、回転したばかりのファイルを見つけることができます。

「sharedscripts」オプションを使用する場合、「/ var / log / sample1.log /var/log/sample[23].log」に設定された$ 1でスクリプトが呼び出されます(特定のスタンザの識別に役立ちますが、正確なファイルではありません)。

うまくいけば、これはあなたに開始する場所を提供します。これはlogrotate> v3.7.5でのみ機能することに注意してください。


1
ハンディ。実際、回転前と回転後の両方のスクリプトは、回転したファイル名を$ 1として受け取るように見えます。
マーク

1
@markスクリプトは、出力ファイルではなく入力ファイルの名前を受け取る
kbolino
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.