时间:2021-07-01 10:21:17 帮助过:5人阅读
由于nginx的日志会不停地增大,所以需要我们自己去切割日志,方便管理,需要达到以下的效果:
分析
As we all know,linux系统下一切都是文件,所以每一个进程都有其文件描述符,而nginx进程将其自己的文件描述符写入了nginx.pid中,我们需要告诉nginx,让其重新打开一个新的日志文件(日志文件的配置详情可看这里,简单说就是让日志记录什么内容。)于是我们需要这条指令:
kill -USR1 `cat ${pid_path}`
这条指令的意思是:首先cat到nginx的pid,是一个整数,然后将信号USR1发送给这个进程,nginx进程收到这个信号后,会根据配置重新打开一个新的日志文件,并将日志写入。
实现
脚本cut_nginx_log.sh:
#!/bin/bash
log_path=/path/to/nginx/
pid_path=/path/to/nginx.pid
#清理掉指定日期前的日志
DAYS=30#生成昨天的日志文件
mv ${log_path}access.log ${log_path}access_$(date -d"yesterday" +"%Y%m%d").log
mv ${log_path}error.log ${log_path}error_$(date -d"yesterday" +"%Y%m%d").log
kill -USR1 `cat ${pid_path}`
#文件夹大小
size=du -m -s${log_path}if [size -gt1000];then
find ${logs_path} -name "access_*" -type f -mtime +$DAYS -exec rm {} \;
find ${logs_path} -name "error_*" -type f -mtime +$DAYS -exec rm {} \;
fi
添加至crontab:
(每天零点自动执行)
crontab -e
00 * * * /path/to/script
至此就解决了自动切割并清理日志的功能,有问题的欢迎提出。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('').text(i)); }; $numbering.fadeIn(1700); }); });以上就介绍了linux服务器自动切割并清理日志,包括了Linux方面的内容,希望对PHP教程有兴趣的朋友有所帮助。