1

OpenBSDにlogrotateはポートがなくnewsyslog、膨大な数のログファイルの月次ローテーションに関する限り、機能が制限されているようです。

私はたくさんのドメインを持っています、のようなnginxログファイル名の膨大な数/var/www/logs/*/*.{access,error}.log

小さなシェルスクリプトとcronjobを考えています。それらをすべて毎月ローテーションし、前の月をファイル名に追加する最も簡単な方法は何でしょうか?

4

2 に答える 2

2

次のcrontabが機能するはずです。

0   0   1   *   *   /etc/nginx/logrotate.monthly.sh

/etc/nginx/logrotate.monthly.shには次のコンテンツが含まれている必要があります。

find /var/www/logs/ -name "*log" -exec \
mv -i {} {}.`sh -c 'date -r $(expr $(date +%s) - 1209600) +%Y-%m'` \; ; \
kill -USR1 `cat /var/run/nginx.pid`

toの-iオプションmvは、ファイルが上書きされないようにするために重要です。今日の日付を2週間前に戻すことで、ファイル名の日付を取得します(« tcsh:2週間前の日付をシェルに印刷»)。

于 2013-03-03T07:09:17.660 に答える
0

このmisc@スレッドも確認してください。

(また、FAQに記載されている、privseped apacheに関する警告と、移動時の短い時間枠の必要性にも注意してください。)

于 2013-03-03T11:55:24.440 に答える