要件
nginx ログは成長し続けるため、管理を容易にするために自分でログをカットする必要があります:
分析
ご存知のとおり、Linux システムではすべてがファイルであるため、各プロセスには独自のファイル記述子があり、nginx プロセスは独自のファイル記述子を nginx.pid に書き込みます。nginx に新しいファイルを再度開かせるように指示する必要があります。ログ ファイル (ログ ファイルの設定の詳細はここで確認できます。簡単に言えば、ログに記録される内容です。) そこで、次のコマンドが必要です:
kill -USR1 `cat ${pid_path}`
このコマンドの意味は次のとおりです: 最初の cat nginx への pid は整数です、シグナル USR1 がこのプロセスに送信され、nginx プロセスがこのシグナルを受信すると、設定に従って新しいログ ファイルが再度開かれ、ログが書き込まれます。
実装
スクリプトcut_nginx_log.sh:
<code><span>#!/bin/bash</span> log_path=/path/to/nginx/ pid_path=/path/to/nginx.pid <span>#清理掉指定日期前的日志</span> DAYS=<span>30</span><span>#生成昨天的日志文件</span> mv <span>${log_path}</span>access.log <span>${log_path}</span>access_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log mv <span>${log_path}</span>error.log <span>${log_path}</span>error_$(date <span>-d</span><span>"yesterday"</span> +<span>"%Y%m%d"</span>).log kill -USR1 `cat <span>${pid_path}</span>` <span>#文件夹大小</span> size=du -m <span>-s</span><span>${log_path}</span><span>if</span> [size <span>-gt</span><span>1000</span>];<span>then</span> find <span>${logs_path}</span> -name <span>"access_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; find <span>${logs_path}</span> -name <span>"error_*"</span> -type f -mtime +<span>$DAYS</span> -exec rm {} \; <span>fi</span></code>
がcrontabに追加されました:
(毎日午前0時に自動的に実行されます)
<code>crontab -e <span>0</span><span>0</span> * * * /path/<span>to</span>/<span>script</span></code>
これにより、ログの自動カットとクリーニングの問題が解決されました。ご不明な点がございましたら、お気軽にお問い合わせください。
').addClass('事前番号付け').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });上記では、Linux コンテンツを含む Linux サーバーのログの自動カットとクリーニングについて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。