nginx日志默認把日志都寫到一個文件中螟左,這樣不方便管理,而且文件容量會越來越大猾昆,所以為了方便管理分析日志把日志按天切割陶因,即每天生成一個新的日志文件。
實現(xiàn)步驟
1. 找到nginx日志文件
我的文件在/data/server/nginx/logs
這個路徑下毡庆,有個access.log文件就是nginx的日志文件
2. 進入該路徑創(chuàng)建個sh文件(稱為批處理日志文件)
touch part_log.sh
(文件名自定義坑赡,后綴.sh即可)
3. 編輯part_log.sh文件。輸入如下內(nèi)容:
vi part_log.sh
D=$(date +%Y-%m-%d)
LOGS_PATH=/data/server/nginx/logs
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/${D}.log
kill -USR1 $(cat /data/server/nginx/logs/nginx.pid)
說明:
- 定義一個D變量并把當前系統(tǒng)時間賦值給D
- 定義一個變量LOGS_PATH用來存放日志的路徑
- 使用mv命令把access.log日志文件么抗, 以時間格式重命名毅否。 這樣nginx又會生成一個新的access.log文件
- kill -USR1 切換日志文件。語法:kill -USR1 主進程號
4. 設置好腳本使用定時器每天23:59跑一次就好了
編輯定時器
crontab -e
輸入如下內(nèi)容
59 23 * * * sh /data/server/nginx/logs/cutlog.sh > /data/bak.log 2>&1
查看定時器內(nèi)容
crontab -l
crontab時間格式內(nèi)容
* * * * * command
M H D m d command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令或腳本內(nèi)容
5. 定時刪除以前的日志
每天生成一個日志文件時間久了會產(chǎn)生很多文件蝇刀,所以需要定期的清理一下舊的文件螟加,
創(chuàng)建clear.sh
文件,輸入如下命令
$ find /data/server/nginx/logs/ -mtime +10 -name "*.log" -exec rm -f {} \;
說明:
find
:查找吞琐,liunx內(nèi)置命令/data/server/nginx/logs/
:日志所在目錄捆探;-mtime
:標準語句寫法;+10
:查找10天前的文件站粟,這里用數(shù)字代表天數(shù)黍图;"*.log"
:log文件;-exec
:固定寫法奴烙;rm -rf
:強制刪除文件助被,包括目錄;{} \;
:固定寫法
連起來的意思就是切诀,查找指定目錄下10天前的*.log文件,然后刪掉揩环。
編輯好腳本后按照第四步加入到定時器中就好了。