| #!/bin/bash |
| |
| #nginx日志目录 |
| s_log_dir="/apps/nginx/logs" |
| #nginx日志文件 |
| s_log="${s_log_dir}/access.log" |
| |
| #切割日志存放目录 |
| d_log_dir="/data/logs/nginx" |
| #切割日志名称,按日期命令 |
| d_log="${d_log_dir}/access`date -d yesterday +%F`.log" |
| |
| #nginx进程号 |
| PID=`cat /apps/nginx/logs/nginx.pid` |
| |
| #判断切割日志存放目录是否存在,不存在则创建 |
| if [ ! -d ${d_log_dir} ];then |
| mkdir -p ${d_log_dir} |
| fi |
| |
| #判断原日志文件是否存在,存在则移动并改名 |
| if [ -f ${s_log} ];then |
| mv ${s_log} ${d_log} |
| fi |
| |
| #nginx进程读写日志文件时,是通过文件描述符去操作的,虽然修改了原"access.log"文件的文件名 |
| #但是原文件描述符与文件本身的对应关系仍然存在,所以重命名后,需要让nginx重新打开一个新文件 |
| #以便将新的日志写入到新文件中。 |
| #/usr/local/nginx/sbin/nginx -s reopen |
| kill -USR1 ${PID} |
| |
| if [ $? -eq 0 ];then |
| echo "`date -d yesterday +%F` 日志切割成功" |
| fi |
| exit 0 |
添加任务计划,每天00:00自动执行
| 在/var/spool/cron/root文件中添加如下代码,每天00:00自动切割日志: |
| |
| 0 0 * * * /bin/bash /opt/nginx_cut_log.sh 2>&1 >>/tmp/nginx_cut.log |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略