标签:脚本 nginx日志 find 直接 int linux 切割日志 简单 linux系统
由于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 -b /path/to/nginx/ | awk ‘{print int($1/1024/1024)}‘` if [size -gt 1000];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
0 0 * * * /path/to/script
至此就解决了自动切割并清理日志的功能。
标签:脚本 nginx日志 find 直接 int linux 切割日志 简单 linux系统
原文地址:https://www.cnblogs.com/areyouready/p/9334872.html