天天看點

nginx日志分割(log rotation)nginx日志及nginx.pid設定日志分割腳本crontab配置定時任務

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指令。

通過下面的指令檢視是否添加成功:

繼續閱讀