前言
Nginx日志默認情況下寫入到一個文件中,為了區分各個域下的日志,我們一般會分開存儲。即時這樣,文件也會變的越來越大,非常不方便查看分析。通常我們是以每日來做統計的,下面來聊聊以日期來分隔Nginx日志。
配置
編寫腳本
#!/bin/bash
#初始化
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
#按天切割日志
mv ${LOGS_PATH}/bbs.52itstyle.com.access.log ${LOGS_PATH}/bbs.52itstyle.com.access_${YESTERDAY}.log
mv ${LOGS_PATH}/blog.52itstyle.com.access.log ${LOGS_PATH}/blog.52itstyle.com.access_${YESTERDAY}.log
#向nginx主進程發送USR1信號,重新打開日志文件,否則會繼續往mv后的文件寫數據的。原因在于:linux系統中,內核是根據文件描述符來找文件的。如果不這樣操作導致日志切割失敗。
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#刪除7天前的日志
cd ${LOGS_PATH}
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0
寫入任務
#執行命令
crontab -e
#寫入文件并保存
0 0 * * * /home/scripts/cut_del_nginx_logs.sh
crontab
crond是linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。Linux下的任務調度分為兩類,系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件。
crontab服務安裝
安裝crontab:
服務操作說明:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
查看crontab服務狀態:
手動啟動crontab服務:
查看crontab服務是否已設置為開機啟動,執行命令:
加入開機自動啟動:
chkconfig –level 35 crond on
crontab格式說明
用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個字段代表一項設置,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,格式如下:

在以上各個字段中,還可以使用以下特殊字符:
- 星號(*):代表所有可能的值,例如day字段如果是星號,則表示在滿足其它字段的制約條件后每天都執行該命令操作。
- 逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”
- 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。