nginx日志切割无效

bozomo 2017年12月07日提问
0

日志切割是脚本是这么写的:

#!/bin/bash
## 零点执行该脚本
## Nginx 日志文件所在的目录
LOGS_PATH=/home/aaa/logs
pid_path="/var/run/nginx.pid"
## 获取昨天的 yyyy-MM-dd
#YESTERDAY=$(date -d ”yesterday” +%Y-%m-%d)
YESTERDAY=$(date -d last-day +%Y%m%d)
## 移动文件
mv ${LOGS_PATH}/aaa.access.log ${LOGS_PATH}/aaa.access.log_${YESTERDAY}.log
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 `cat ${pid_path}`

这个脚本单独执行是可以的,但是放到crontab -e却没有自动按时执行,crontab -e内容如下:

0 0 * * * /bin/bash /etc/nginx/mylogs/cut-log.sh


5个回答

1

我都是用Linux的 logrotate 来处理的

0

crontab 执行时会在/var/log/下生成名字为cron类似的日志,如果有错,也会报出来,查一下有没有错误

0

同样遇到这个问题,后来直接编辑/etc/crontab文件解决了

0

可能是权限不够。你是用什么用户执行 crontab -e 的?

另外你是如何判断出没有自动按时执行的?为什么不可能是执行了但是在移动文件的时候出错了?

最后,建议使用 logrotate,省心省力。

0

LOGS_PATH="/home/aaa/logs"

Shell脚本赋值时,如果是路径,使用双引号或者单引号!

撰写答案