nginx日志切割定時(shí)任務(wù)的實(shí)現(xiàn)
nginx進(jìn)行日志切割的好處:
便于管理和查詢(xún):隨著時(shí)間的推移,Nginx 日志文件可能會(huì)變得非常大。將其切割成較小的、按時(shí)間段劃分的文件,使得在需要查找特定時(shí)間段的日志時(shí)更加方便和高效。
控制存儲(chǔ)空間:未切割的日志文件可能會(huì)迅速消耗大量的磁盤(pán)空間。通過(guò)定期切割并刪除較舊的日志,可以有效地控制存儲(chǔ)空間的使用。
提高處理效率:處理較小的切割后的日志文件比處理一個(gè)巨大的整體日志文件要快得多,特別是在進(jìn)行日志分析、備份或數(shù)據(jù)挖掘等操作時(shí)。
方便備份和歸檔:切割后的日志可以更有組織地進(jìn)行備份和歸檔,符合數(shù)據(jù)保留策略和合規(guī)要求。
避免單一文件損壞導(dǎo)致數(shù)據(jù)丟失:如果一個(gè)巨大的日志文件損壞,可能會(huì)丟失大量的日志數(shù)據(jù)。而切割后的多個(gè)較小文件,降低了這種風(fēng)險(xiǎn)。
更好地跟蹤和監(jiān)控:可以根據(jù)切割后的日志文件,更清晰地跟蹤和監(jiān)控系統(tǒng)在不同時(shí)間段的活動(dòng)和性能。
實(shí)現(xiàn)步驟:
1.給access.log日志文件重命名,并備份
在 Linux 系統(tǒng)中,當(dāng)需要切割 Nginx 日志文件時(shí)(例如按天切割),一般需要先將當(dāng)前日志文件移動(dòng)并重命名,然后使用“nginx -s reopen”命令重新打開(kāi)新的日志文件進(jìn)行記錄
[root@localhost logs]# ls access.log error.log nginx.pid ## nginx的日志文件是/logs/access.log [root@localhost logs]# mv access.log "access.log_$(date +"%Y-%m-%d")" ## 這條命令的作用是將當(dāng)前的 access.log 文件重命名為 access.log_<當(dāng)前日期> 的格式 [root@localhost logs]# nginx -s reopen [root@localhost logs]# ls access.log access.log_2024-07-15 error.log nginx.pid ##可以看到7月15的日志已經(jīng)備份,再有新日志就會(huì)記錄在access.log里,
2.編寫(xiě)定時(shí)日志腳本
在生產(chǎn)環(huán)境下,也就是工作中,日志切割主要以定時(shí)任務(wù)的形式來(lái)操作
[root@localhost ~]# mkdir myscripts/ [root@localhost ~]# cd myscripts/ [root@localhost myscripts]# vim cut_nginx_log.sh ## 創(chuàng)建myscripts文件夾,用來(lái)存放用戶(hù)自己編寫(xiě)的腳本文件,編寫(xiě)cut_nginx_log.sh腳本
釋?zhuān)?/p>
腳本代碼:
#!/bin/bash # 定義日志目錄和文件名 LOG_DIR="/opt/nginx/logs" ACCESS_LOG="$LOG_DIR/access.log" ERROR_LOG="$LOG_DIR/error.log" # 獲取當(dāng)前日期 CURRENT_DATE=$(date +%Y%m%d) # 創(chuàng)建新的日志文件 touch "$ACCESS_LOG.$CURRENT_DATE" touch "$ERROR_LOG.$CURRENT_DATE" # 重命名舊的日志文件 mv "$ACCESS_LOG" "$ACCESS_LOG.$CURRENT_DATE" mv "$ERROR_LOG" "$ERROR_LOG.$CURRENT_DATE" # 向 Nginx 主進(jìn)程發(fā)送 USR1 信號(hào),使其重新打開(kāi)日志文件 kill -USR1 $(cat /opt/nginx/logs/nginx.pid)
3.運(yùn)行日志切割腳本
[root@localhost myscripts]# bash cut_nginx_log.sh ## 運(yùn)行bash腳本文件 [root@localhost myscripts]# yum install -y tree ## 安裝tree,tree 是一個(gè)用于以樹(shù)狀圖形式列出目錄內(nèi)容的命令行工具,能夠清晰地展示目錄和文件的層次結(jié)構(gòu)。 [root@localhost logs]# tree ./
## 用tree 查看logs文件夾,看該目錄的詳細(xì)結(jié)構(gòu),可以看到access.log和error.log都因運(yùn)行了日志切割腳本生成備份文件
4.將日志切割腳本加入crontab定時(shí)任務(wù)
[root@localhost ~]# crontab -e
## crontab -e
命令用于編輯當(dāng)前用戶(hù)的定時(shí)任務(wù)(Cron 任務(wù))配置。
## 每天凌晨 1 點(diǎn)執(zhí)行該腳本任務(wù)
crontab定時(shí)任務(wù)配置講解
crontab
定時(shí)任務(wù)的配置格式如下:
其中,每個(gè) *
代表的含義分別是:
- 分鐘(0 - 59)
- 小時(shí)(0 - 23)
- 日(1 - 31)
- 月(1 - 12 或 JAN - DEC)
- 星期(0 - 6 或 SUN - SAT,0 表示星期日)
以下是一些常見(jiàn)的配置示例:
每 5 分鐘執(zhí)行一次任務(wù):
*/5 * * * * command
每天凌晨 1 點(diǎn)執(zhí)行任務(wù):
0 1 * * * command
每月 1 號(hào)中午 12 點(diǎn)執(zhí)行任務(wù):
0 12 1 * * command
每周一早上 8 點(diǎn)執(zhí)行任務(wù):
0 8 * * 1 command
每年 1 月 1 日 0 點(diǎn)執(zhí)行任務(wù):
0 0 1 1 * command
請(qǐng)將 command
替換為您實(shí)際要執(zhí)行的命令或腳本路徑。
配置完成后,保存并退出編輯界面,定時(shí)任務(wù)就會(huì)按照您設(shè)置的規(guī)則生效。
到此這篇關(guān)于nginx日志切割定時(shí)任務(wù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx日志切割定時(shí)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Nginx部署Vue項(xiàng)目全過(guò)程及踩坑記錄
這篇文章主要介紹了使用Nginx部署Vue項(xiàng)目全過(guò)程及踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn)的過(guò)程詳解
這篇文章主要介紹了內(nèi)網(wǎng)環(huán)境nginx配置https訪問(wèn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06一次nginx 504 Gateway Time-out錯(cuò)誤排查、解決記錄
這篇文章主要介紹了一次nginx 504 Gateway Time-out錯(cuò)誤排查、解決記錄,經(jīng)過(guò)反復(fù)檢查,發(fā)現(xiàn)造成這個(gè)問(wèn)題的原因就是PHP的CURL沒(méi)有設(shè)置超時(shí)時(shí)間,解決辦法只要設(shè)置超時(shí)時(shí)間或者修改一下nginx的配置即可解決,需要的朋友可以參考下2014-05-05