Nginx日誌切割

2021-10-07 23:14:45 字數 4253 閱讀 7955

1.一天內壓縮日誌,存放10天後刪除所有日誌和壓縮檔案
vi cutting_nginx_log.sh

#!/bin/bash

cd /usr/local/nginx/logsif[

! -d nginx_log ]

;then

mkdir nginx_log

fimv access.log nginx_log/access_$(

date

'+%f~%h:%m'

).log

mv error.log nginx_log/error_$(

date

'+%f~%h:%m'

).log

/usr/local/nginx/sbin/nginx -s reload

tar -zcvf $(

date

'+%f~%h:%m'

)_log.tar.gz nginx_log --force-loca

rm -rf nginx_log/*

cat> /var/spool/cron/root <<

eof0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>&1

eoffind -type f -mtime +10 |

grep -v nginx.pid|

xargs -l 1 rm -rf

2.分析指令碼
判斷的nginx_log目錄是否存在,不存在nginx_log目錄就建立

if 的引數

if 的引數說明

[ -d dir ]

如果目錄存在且是乙個目錄則為真(true),否則為false(假)

[ -e file ]

如果存在則為真(true),否則為false(假)

[ -f file ]

如果存在普通的檔案且是乙個普通的檔案則為真(true),否則為false(假)

[ ! ]

非運算,表示式為 true 則返回 false,否則返回 true, [ ! false ] 返回 true

[ -o ]

或運算,有乙個表示式為 true 則返回 true

[ -a ]

與運算,兩個表示式都為 true 才返回 true

時間的格式化

date +%f~%t

2020-07-10~14:49:47

date +%f~%h:%m:%s

2020-07-10~14:50:51

date +%y-%m-%d~%h:%m:%s

2020-07-10~14:52:09

定時任務計畫

#編輯crond服務的定時任務

crontab -e

#刪除crond服務的定時任務

crontab -r

#檢視crond服務的定時任務

crontab -l

0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>

&1#檢視定時任務的說明

cat /etc/crontab

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

# for details see man 4 crontabs

# example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) or jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

/var/spool/cron/ 和 /etc/crontab 與 crontab的區別

名稱說明

/var/spool/cron/

指定使用者,但是所屬使用者和所屬組的許可權都為root

/etc/crontab 與 crontab

指定使用者,所屬使用者和所屬組的許可權都為指定的使用者

3.系統日誌的種類
名稱

說明/var/log/message

/var/log/secure

安全和身份驗證相關的訊息和登入失敗的日誌檔案;ssh程序連線產生的日誌

/var/log/maillog

郵件伺服器相關的訊息日誌檔案

/var/log/cron

定時任務計畫相關的日誌檔案

/var/log/boot.log

系統引導啟動相關的訊息記錄

/var/log/dmesg

系統啟動相關的訊息記錄

/var/log/wtmp

記錄登入者訊錄,二進位制檔案,須用last來讀取內容 who -u /var/log/wtmp 檢視資訊

/var/log/yum.log

yum源的安裝軟體包的訊息記錄

檢視ssh登入的訊息記錄

grep  ssh2 /var/log/secure|

awk''

ip:172.25.0.1 埠:55799 協議:ssh2

ip:172.25.0.1 埠:54590 協議:ssh2

ip:172.25.0.1 埠:55997 協議:ssh2

ip:172.25.0.20 埠:35550 協議:ssh2

ip:172.25.0.20 埠:35550 協議:ssh2

#登入虛擬終端(xshell)的次數

who /var/log/wtmp |

grep pts |

wc -l

94

4.平滑重啟nginx
#平滑重啟nginx

kill -hup `

cat /usr/local/nginx/logs/nginx.pid`

vi cutting_nginx_log.sh

#!/bin/bash

cd /usr/local/nginx/logsif[

! -d nginx_log ]

;then

mkdir nginx_log

fimv access.log nginx_log/access_$(

date

'+%f~%h:%m'

).log

mv error.log nginx_log/error_$(

date

'+%f~%h:%m'

).log

#/usr/local/nginx/sbin/nginx -s reload

kill -hup `

cat /usr/local/nginx/logs/nginx.pid`

tar -zcvf $(

date

'+%f~%h:%m'

)_log.tar.gz nginx_log --force-loca

rm -rf nginx_log/*

cat> /var/spool/cron/root <<

eof0 0 * * * sh /root/cutting_nginx_log.sh > /dev/null 2>&1

eoffind -type f -mtime +10 |

grep -v nginx.pid|

xargs -l 1 rm -rf

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...