nginx日志切割无效

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

#!/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


阅读 4.7k
5 个回答

我都是用Linux的 logrotate 来处理的

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

新手上路,请多包涵

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

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

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

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

LOGS_PATH="/home/aaa/logs"

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题