專案已上線運營一段時間,今天登陸伺服器檢視服務的運營狀況,發現乙個nginx的日誌越滾越大,而且nginx自身定時分割日誌的功能,故查詢相關的資料,編寫乙個shell,交給系統定時呼叫該任務執行。
分割日誌的s**件內容如下:
#!/bin/bash
#此指令碼用於自動分割nginx的日誌,包括access.log和error.log
#每天00:00執行此指令碼 將前一天的access.log重新命名為access-***x-xx-xx.log格式,並重新開啟日誌檔案
#nginx日誌檔案所在目錄
log_path=/usr/local/nginx/logs/
#獲取昨天的日期
yesterday=$(date -d "yesterday"
+%y-%m-%d)
month=$(date -d "yesterday"
+%y-%m)if[
!-d "$access_logs"
]; then
mkdir "$access_logs"
fiif[!
-d "$error_logs"
]; then
mkdir "$error_logs"
fiif[!
-d "$access_logs/$"
]; then
mkdir "$access_logs/$"
fiif[!
-d "$error_logs/$"
]; then
mkdir "$error_logs/$"
fi#獲取pid檔案路徑
pid=/usr/local/nginx/logs/nginx.pid
#分割日誌
mv $nginx.access.log $access_logs/$
/$.log
mv $nginx.error.log $error_logs/$
/$.log
#向nginx主程序傳送usr1訊號,重新開啟日誌檔案
kill
-usr1 $(
cat/usr/local/nginx/logs/nginx.pid)
賦予檔案可執行許可權
chmod +x /usr/local/nginx/logs/cut_nginx_log.sh
配置crontab每天凌晨00:00定時執行這個指令碼
crontab -e
輸入以下內容
00 00 * * * /bin/bash /usr/local/nginx/logs/cut_nginx_log.sh
儲存並退出。
nginx日誌分割
以下這個指令碼實施的核心是 每天凌晨將日誌檔案壓縮並移動到相應的年份月份目錄下,然後重新生成日誌檔案,同時記錄日誌 bin bash logs path home wwwlog 日誌存放位置 year date y 年份 month date m 月份 day date y m d 日期 time ...
Nginx 日誌分割
usr bin bash 日誌檔案存放目錄 logs path var log nginx nginx程序pid nginx pid cat var run nginx.pid 日誌名稱 logs name date d yesterday y m d 改名 mv logs path access....
NGINX日誌分割
nginx日誌分割 nginx 日誌分割 主要用到的命令是 usr local nginx sbin nginx s reopen nginx s reopen 意思是重新生成日誌檔案。所以我們可以每天定時把當天的日誌問價mv 成帶日期的,然後再生成新的檔案 usr local nginx 是我的n...