时常收到阿里的提示,登录上服务器看看日志吧,发现文件好大,读取都要半天。。。。
百度了一下怎么按日期存储。。。。
记录下过程:
编写移动log文件shell
- #!/bin/bash
- ## 零点执行该脚本
- ## Nginx 日志文件所在的目录
- LOGS_PATH=/alidata/log
- ## 获取昨天的 yyyy-MM-dd
- YESTERDAY=$(date -d ”yesterday” +%Y-%m-%d)
- ## 移动文件
- mv ${LOGS_PATH}/mysql/slow.log ${LOGSPATH}/mysql/slow${YESTERDAY}.log
- mv ${LOGS_PATH}/nginx/error.log ${LOGSPATH}/nginx/error${YESTERDAY}.log
- mv ${LOGS_PATH}/nginx/access/default.log ${LOGSPATH}/nginx/access/default${YESTERDAY}.log
- mv ${LOGS_PATH}/nginx/access/bbs.log ${LOGSPATH}/nginx/access/bbs${YESTERDAY}.log
- mv ${LOGS_PATH}/nginx/access/vod.log ${LOGSPATH}/nginx/access/vod${YESTERDAY}.log
- mv ${LOGS_PATH}/nginx/access/dz.log ${LOGSPATH}/nginx/access/dz${YESTERDAY}.log
- mv ${LOGS_PATH}/php/php-fpm.log ${LOGSPATH}/php/php-fpm${YESTERDAY}.log
- mv ${LOGS_PATH}/php/php-fpm-slow.log ${LOGSPATH}/php/php-fpm-slow${YESTERDAY}.log
- ## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
- kill -USR1 $(cat /alidata/server/nginx/logs/nginx.pid)
将 alidata/log 目录下的mysql php nginx下的所有log 存为 XXX_[yyyy-MM-dd].log 的文件。
脚本完成后将其存入 Nginx 安装目录的 sbin 中,取名为 cut.sh,之后使用 crontab -e 新增一个定时任务,在其中增加执行这个脚本:
- 0 0 /bin/bash /usr/local/nginx/sbin/cut-log.sh
前面两个数字分别是 分 时 后面 ** 每天
Ctrl+O保存 Ctrl+X退出后手动执行了下脚本,第一次提示没权限
chmod后再次执行提示 /bin/bash^M: bad interpreter: No such file or directory
脚本是在windows下编辑上传的,出现上面错误的原因之一是脚本文件是DOS格式的,即每一行的行尾以\r\n来标识, 使用vim编辑器打开脚本, 运行:
:set ff?
可以看到set ff=dos的字样. 使用:set ff=unix把它强制为unix格式的, 然后wq存盘退出, 即可.