引用链接:https://www.cnblogs.com/comprehensive/p/12856097.html 背景说明
nginx运行的太久,日志就会越来越大,有必要对他进行日志切割,而nginx的日志文件有两个:
access.log 记录哪些用户,哪些页面以及用户浏览器,IP等访问信息; error.log 记录服务器错误的日志
linux kill -usr1 和kii -HUP的作用
kill -USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。 kill -HUP pid 或者 killall -HUP pName: 其中pid是进程标识,pName是进程的名称 如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。 根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。
一、利用脚本日志切割(按天进行日志切割) 以下脚本任选一个就行;
A.编写脚本
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/usr/local/nginx/logs_backup/$year$month"
logs_path="/usr/local/nginx/logs/"
logs_access="access"
logs_error="error"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_backup_path ]||mkdir -p $logs_backup_path
rq=`date +%Y%m%d`
mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
B.编写脚本
d=`date -d "-1 day" +%Y%m%d` 生成昨天的日期
logdir="/data/logs" 定义存放位置
nginx_pid="/usr/local/nginx/logs/nginx.pid" 定义位置,找他的pid
cd $logdir 进入目录下
for log in `ls *.log` 做个for循环
do
mv $log $log-$d 做一个改名操作
done
/bin/kill -HUP `cat $nginx_pid` 重新加载一下,生成新的日志文件
设置定时任务
59 23 * * * bash /usr/local/nginx/cut_ngnix_log.sh
** 二、利用logrotate管理日志** (1)默认centos系统安装自带logrotate,软件包信息说明;
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
(2)使用Logrorate切割日志
/var/log/nginx/*.log
{
daily
rotate 30
missingok
compress
delaycompress
notifempty
postrotate
if [ -f /var/run/nginx/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx/nginx.pid`
fi
endscript
}
(3)保存好配置文件后,测试效果:
access.log access.log.1 error.log error.log.1
(4)定时任务执行
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx
扩展链接,如有侵权,请联删 1.nginx日志切割方法 2.linux kill usr1的作用
微信公众号:
|