nginx沒有内置日志分割功能,容易造成日志累積,檔案越來越大。必須借助于外部指令或者工具來分割日志。
本文介紹一種通過自定義腳本來分割日志的方法。
nginx日志及nginx.pid設定
nginx日志及程序号檔案可以通過nginx.conf來修改,下面的配置将日志和nginx.pid都放在了nginx安裝目錄下。
worker_processes ;
access_log logs/access.log main;
error_log logs/error.log warn;
pid logs/nginx.pid; #pid of nginx master process
日志分割腳本
将實作分割的腳本放在/usr/local/bin/rotate_nginx_log.sh,内容如下
#!/bin/sh
# Get yesterday's date as YYYY-MM-DD
YESTERDAY=$(date -d 'yesterday' '+%Y-%m-%d')
# move log
mv /path/to/access.log /destination/access-$YESTERDAY.log
mv /path/to/error.log /destination/error-$YESTERDAY.log
PID_FILE=/usr/local/nginx/logs/nginx.pid
# Tell nginx to reopen the log file.
kill -USR1 $(cat $PID_FILE)
crontab配置定時任務
寫好腳本後,接下來定時執行即可。
打開定時任務配置頁面後,輸入
可以在每天淩晨執行上述日志重命名腳本,完成日志分割任務。
注意,許多linux的系統隻有root使用者才可以添加定時任務,是以必須用sudo指令。
通過下面的指令檢視是否添加成功: