回答:
Unixデーモンの間では、ハングアップシグナル(SIGHUP
)を送信すると、ログファイルをフラッシュしたりローテーションしたりする、一種の非公式な準標準になっています。Nginxはこの規則に準拠していないがUSR1
、NginxのWebサイトに「ログのローテーション」というタイトルで文書化されているように、信号に同じように応答します。
だから、あなたは次のようなことを試すことができます
kill -s USR1 `pidof nginx`
nginxログのログローテーション:
# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
/opt/nginx/logs/error.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
logrotating rails生産ログ:
/home/app_user/apps/railsapp/log/production.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
/etc/logrotate.d/nginx
。それが有効になります。
logrotateを使用する場合は、logrotate.confのnginxのセクションに(正しい場所で)以下を追加します。
postrotate
kill -s USR1 `cat /location/of/nginx.pid`
endscript