Nginx定時(shí)切割日志實(shí)現(xiàn)詳解
前言
Nginx日志默認(rèn)情況下寫入到一個(gè)文件中,為了區(qū)分各個(gè)域下的日志,我們一般會(huì)分開存儲。即時(shí)這樣,文件也會(huì)變的越來越大,非常不方便查看分析。通常我們是以每日來做統(tǒng)計(jì)的,下面來聊聊以日期來分隔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主進(jìn)程發(fā)送USR1信號,重新打開日志文件,否則會(huì)繼續(xù)往mv后的文件寫數(shù)據(jù)的。原因在于:linux系統(tǒng)中,內(nèi)核是根據(jù)文件描述符來找文件的。如果不這樣操作導(dǎo)致日志切割失敗。 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
寫入任務(wù)
#執(zhí)行命令 crontab -e #寫入文件并保存 0 0 * * * /home/scripts/cut_del_nginx_logs.sh
crontab
crond是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程,與windows下的計(jì)劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù)工具,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程,crond進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動(dòng)執(zhí)行該任務(wù)。Linux下的任務(wù)調(diào)度分為兩類,系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個(gè)crontab文件,這個(gè)就是系統(tǒng)任務(wù)調(diào)度的配置文件。
crontab服務(wù)安裝
安裝crontab:
yum install crontabs
服務(wù)操作說明:
service crond start //啟動(dòng)服務(wù) service crond stop //關(guān)閉服務(wù) service crond restart //重啟服務(wù) service crond reload //重新載入配置
查看crontab服務(wù)狀態(tài):
service crond status
手動(dòng)啟動(dòng)crontab服務(wù):
service crond start
查看crontab服務(wù)是否已設(shè)置為開機(jī)啟動(dòng),執(zhí)行命令:
ntsysv
加入開機(jī)自動(dòng)啟動(dòng):
chkconfig –level 35 crond on
crontab格式說明
用戶所建立的crontab文件中,每一行都代表一項(xiàng)任務(wù),每行的每個(gè)字段代表一項(xiàng)設(shè)置,它的格式共分為六個(gè)字段,前五段是時(shí)間設(shè)定段,第六段是要執(zhí)行的命令段,格式如下:
在以上各個(gè)字段中,還可以使用以下特殊字符:
- 星號(*):代表所有可能的值,例如day字段如果是星號,則表示在滿足其它字段的制約條件后每天都執(zhí)行該命令操作。
- 逗號(,):可以用逗號隔開的值指定一個(gè)列表范圍,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
- 正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,例如“0-23/2”表示每兩小時(shí)執(zhí)行一次。同時(shí)正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ELK收集Nginx日志的項(xiàng)目實(shí)戰(zhàn)
本文主要介紹了ELK收集Nginx日志的項(xiàng)目實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05nginx+lua(openresty)實(shí)現(xiàn)黑/白名單權(quán)限控制的示例
本文介紹了如何使用Openresty進(jìn)行權(quán)限控制和灰度發(fā)布,具體通過定時(shí)器定期更新黑名單數(shù)據(jù),進(jìn)行用戶過濾和權(quán)限管控,具有一定的參考價(jià)值,感興趣的可以了解一下2024-09-09詳解nginx前端根據(jù)$remote_addr分發(fā)方法
這篇文章主要介紹了詳解nginx前端根據(jù)$remote_addr分發(fā)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Nginx方向代理wss或ws的實(shí)現(xiàn)示例
本文主要介紹了Nginx方向代理wss或ws的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10