nginx在涉及大流量时,会发生非常庞大的日志文件,包含access.log
和error.log
,日志会随着连接不断增加,到无限大。如果日志文件太大,会导致nginx运行缓慢,卡顿,也是存储资源的浪费。
比如体验盒子的nginx日志文件
手动释放清理nginx日志文件access.log
查看并查找相关信息及路径
# 查看空间占用 $ df -h # 定位nginx $ which nginx /usr/local/nginx/logs # 列出日志文件 $ cd /usr/local/nginx/logs ls # 查看日志文件大小 $ du -sh ./* # 暂停nginx并删除日志文件 # nginx -s stop rm -rf *.log
这里需要注意的是,看到网上有人说重启nginx可以清除日志文件,这是错误的。重启并不会清空日志文件,你需要手动清理。
另外,你也可以使用覆盖日志的方法清理nginx日志文件
echo "" > /usr/local/nginx/access.log
如果不需要日志文件就直接关闭(不建议),nginx.conf
access_log off;
对nginx access.log进行分割
通过shell脚本 linux的定时任务进行的一个平滑切分。不需要重启nginx进程。代码cut_logs.sh
#!/bin/bash log_path=/usr/local/nginx/logs/access.log save_path=/usr/local/nginx/logs/bak/access_$(date %y%m%d -d 'yesterday').log cp $log_path $save_path && echo > $log_path
设置定时任务
$ crontab -e #输入 0 0 * * * /usr/bin/sh cut_logs.sh #每天的00:00执行日志切分 $ crontab -l #查看定时任务是否添加成功