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