此腳本實現nginx日誌文件按天自動切割,並且刪除一個月前的日誌
先上腳本:
- #!/bin/bash
- cd /var/log/nginx/
- mv sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log
- mv api.sends.cc.access.log api.sends.cc.access.$(date +%Y%m%d).log
- mv blog.sends.cc.access.log blog.sends.cc.access.$(date +%Y%m%d).log
- mv error.log error.$(date +%Y%m%d).log
- sudo kill -USR1 `cat /usr/local/web/nginx636/logs/nginx.pid`
- find /var/log/nginx/ -name "sendsadmin.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1
- find /var/log/nginx/ -name "api.sends.cc.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1
- find /var/log/nginx/ -name "blog.sends.cc.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1
- find /var/log/nginx/ -name "error.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1
註解:
- mv sendsadmin.access.log sendsadmin.access.$(date +%Y%m%d).log
- #把日誌文件sendsadmin.access.log改名爲sendsadmin.access.(當天日期).log
- sudo kill -USR1 `cat /usr/local/web/nginx636/logs/nginx.pid`
- #nginx重建日誌文件
- find /var/log/nginx/ -name "sendsadmin.access.*" -type f -ctime +30 -exec rm {} \; > /dev/null 2>&1
- #find -- 查找
- #/var/log/nginx/ -- 查找日誌目錄
- #-name "sendsadmin.access.*" -type f -- 找以"sendsadmin.access."開頭的文件
- #-ctime +30 -- 查找距離當日30天前文件
- #-exec rm {} \; -- 找到後執行rm命令
- #> /dev/null 2>&1 -- 輸出重定向
保存腳本到本地並把腳本加入crontab每天23:59運行
- sudo vi /etc/crontab
- 加入以下:
- 59 23 * * * root /bin/bash /usr/local/web/nginx636/conf/cutlogs.sh