網站首頁 編程語言 正文
實現nginx的日志切割
(注:為什么要切割呢?因為當你用戶訪問量大的時候,可能日志也很大。)
《1》:ll /usr/local/nginx/logs/? 查看日志 (注:有兩個日志,一個是訪問日志,另一個是錯誤日志。)
《2》:tail -f /usr/local/nginx/logs/access.log? 查看訪問日志
《3》:vim /opt/cut_nginx_log.sh? 編寫一個腳本
《4》:腳本內容:
#!/bin/bash #cut_nginx_log.sh datetime=$(date -d "-1 day" "+%Y%m%d") log_path="/usr/local/nginx/logs" pid_path="/usr/local/nginx/logs/nginx.pid" [ -d $log_path/backup ] || mkdir -p $log_path/backup if [ -f $pid_path ] then mv $log_path/access.log $log_path/backup/access.log-$datetime kill -USR1 $(cat $pid_path) find $log_path/backup -mtime +30 | xargs rm -f else echo "Error,Nginx is not working!" | tee -a /var/log/messages fi
注釋:
#!/bin/bash #cut_nginx_log.sh datetime=$(date -d "-1 day" "+%Y%m%d")??????? //時間,date -d "-1 day"代表日期減1 log_path="/usr/local/nginx/logs"???????????? //日志的存放位置 pid_path="/usr/local/nginx/logs/nginx.pid"?? //進程的PID號,有PID號代表 進程還活著 [ -d $log_path/backup ] || mkdir -p $log_path/backup?? //如果$log_path/backup不是一個目錄則創 建$log_path/backup目錄 if [ -f $pid_path ]??????????????????????????????? //如果$pid_path是一個文件 then mv $log_path/access.log $log_path/backup/access.log-$datetime? //那么移動舊日志的文件到新目錄 下以此來實現分割 kill -USR1 $(cat $pid_path)??????????????????????????????????? //USR1代表信號,他會給進程傳一 個信號讓進程生成一個新的日志 find $log_path/backup -mtime +30 | xargs rm -f??????????????? //查找30天前的日志并刪除 else echo "Error,Nginx is not working!" | tee -a /var/log/messages? //否則提示nginx is not working且追加到日志中 fi
(注:kill 信號,信號有64種。)
《5》:chmod +x /opt/cut_nginx_log.sh?? 給腳本添加執行權限
《6》:crontab -e?? 寫計劃任務
《7》:寫入
*/5???? *?????? *?????? *?????? *?????? /usr/sbin/ntpdate pool.ntp.org > /dev/null 2 >&1 0?????? 0?????? *?????? *?????? *?????? /opt/cut_nginx_log.sh
《7》:/opt/cut_nginx_log.sh? 執行腳本
《8》:ls /usr/local/nginx/logs? 查看日志目錄下(注:下面中access.log是新的訪問日志,backup里面是老的訪問日志。)
《9》:ls /usr/local/nginx/logs/backup/ 查看
《10》:tailf /usr/local/nginx/logs/access.log?? 查看訪問日志(注:tailf 是等同tail -f的)
《11》:在瀏覽器中訪問
《11》:tailf /usr/local/nginx/logs/access.log? 在去訪問,他下面會出現
面試題討論:
說明Nginx的訪問日志記錄在 access.log文件中。
1、如果將access.log重命名為a.log時,新產生的日志寫到哪兒?為什么?
答案:日志將會寫入到a.log 文件中,因為重命名后文件的 Inode,沒有變化,文件系統是根據Inode查找文件的。
2、如果此時將 Nginx服務重啟后,新產生的田志寫到哪兒?為什么?
答案:日志將會寫入到新的access.log文件中,因為重啟時會加載Nginx的配置文件,配置文件中是通過文件名指定日志的,所以會創建新的日志。
總結
原文鏈接:https://blog.csdn.net/m0_54434140/article/details/122489739
相關推薦
- 2023-05-19 Flutter?枚舉值enum和int互相轉化總結_Android
- 2024-01-11 redis開啟密碼驗證
- 2023-02-04 Go語言并發之原子操作詳解_Golang
- 2022-04-10 Blazor實現數據驗證_基礎應用
- 2022-07-02 ASP.NET配置文件中自定義節點_實用技巧
- 2022-01-13 出現/usr/lib64/erlang/erts-10.3/bin/beam.smp: error
- 2022-07-23 C++強制類型轉換的四種方式_C 語言
- 2022-07-26 css媒體查詢
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支