Nginx 切割日志
Nginx 日志切割-手动
现有的日志都会存在 access.log 文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切割规则可以以天为单位,如果每天有几百G或者几个T的日志的话,则可以按需以每半天或者每小时对日志切割一下。
具体步骤如下:
- 创建一个shell可执行文件:cut_my_log.sh,内容为:
#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
-
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
- 为cut_my_log.sh添加可执行的权限:
chmod +x cut_my_log.sh
测试日志切割后的结果:
./cut_my_log.sh
Nginx 日志切割-定时
使用定时任务
- 安装定时任务:
yum install crontabs
- crontab -e 编辑并且添加一行新的任务:
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
重启定时任务:
service crond restart
或者
systemctl restart crond.service
- 附:常用定时任务命令:
- 启动服务
service crond start
或者
systemctl start crond.service
关闭服务
service crond stop
或者
systemctl stop crond.service
重启服务
service crond restart
或者
systemctl restart crond.service
重新载入配置
service crond reload
或者
systemctl reload crond.service
编辑任务
crontab -e
查看任务列表
crontab -l
定时任务表达式:
Cron表达式是,分为5或6个域,每个域代表一个含义,如下所示:
分 | 时 | 日 | 月 | 星期几 | 年(可选) | |
取值范围 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2019/2020/2021/… |
常用表达式:
- 每分钟执行:
*/1 * * * *
- 每日凌晨(每天晚上23:59)执行:
59 23 * * *
- 每日凌晨1点执行:
0 1 * * *
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步