vim /root/project/nginx_logs_task/cut_nginx_log.sh
# /bin/bash
#function@nginx日誌切割
#日誌檔案備份個數
number=20
#nginx日誌路徑
base_path='/usr/local/nginx/logs'
#nginx日誌備份路徑
base_path_back_dir='/usr/local/nginx/logs_back'
#建立目錄時間 當天時間 例如:2019-03-14
#log_path=$(date -d yesterday +"%y%m%d") #該引數是建立前一天資料,如需要當天備份,可使用
log_path=$(date +"%y%m%d")
#日誌建立時間
#date=$(date -d yesterday +"%y-%m-%d-%h")#該引數是建立前一天資料,如需要當天備份,可使用
date=$(date +"%y-%m-%d-%h")
#如果資料夾不存在則建立
if [ ! -d $base_path_back_dir ];
then
mkdir -p $base_path_back_dir;
fi#在nginx日誌備份路徑下建立以當天時間命名的目錄
mkdir -p $base_path_back_dir/$log_path
#將備份日誌
mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log
mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log
mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log
#記錄操作日誌
echo "mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log" >> $base_path_back_dir/log.txt
echo "mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log" >> $base_path_back_dir/log.txt
echo "mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log" >> $base_path_back_dir/log.txt
#nginx日誌重讀
kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`
#找出需要刪除的備份
delfile=`ls -l -crt $base_path_back_dir -f |grep "/$" | awk '' | head -1`
#判斷現在的備份數量是否大於$number
count=`ls -l $base_path_back_dir | grep "^d" | wc -l`
if [ $count -gt $number ]
then
#刪除最早生成的備份,只保留number數量的備份
rm -rf $delfile
#寫刪除檔案日誌
echo "rm -rf $delfile" >> $base_path_back_dir/log.txt
fi
vim /root/project/nginx_logs_task/cut_nginx_log.cron
每天凌晨執行一次
0 0 * * * . /etc/profile;/bin/sh /root/project/nginx_logs_task/cut_nginx_log.sh
crontab -l
以前有任務執行 crontab -e 編輯
以前沒有任務crontab cut_nginx_log.sh
nginx日誌切割
web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...
nginx 日誌切割
直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...
Nginx日誌切割
編輯指令碼tianshl tianshl nginx vim nginx log division.sh指令碼內容 bin sh 昨天日期 yesterday date v 1d y m d 日誌目錄 log path usr local var log nginx sdk日誌路徑 sdk path...