Dokcer下Nginx日志清理

日志清理脚本

在 Docker 中清理 Nginx 日志,首先准备脚本clearLog.sh脚本

YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

LOGS_PATH=/data/srv/nginx/logs
LOGS_BAK_PATH=/data/srv/nginx/logs

cp ${LOGS_PATH}/access.log ${LOGS_BAK_PATH}/access_${YESTERDAY}.log
> ${LOGS_PATH}/access.log

error_log=${LOGS_PATH}/error.log
if [ -e $error_log ]
then
  cp ${error_log} ${LOGS_BAK_PATH}/error_${YESTERDAY}.log
  > ${error_log}
fi

cp ${LOGS_PATH}/index.log ${LOGS_BAK_PATH}/index_${YESTERDAY}.log
> ${LOGS_PATH}/index.log

docker exec nginx nginx -s reload

功能是将日志目录下的 xx.log 重新命名为 xx_yesterday.log 的形式。
并将 xx.log 文件内容清空。
LOGS_PATH 原始日志地址。
LOGS_BAK_PATH 新的日志文件地址。
if [ -e $error_log ] 判断文件是否存在。

注意里面使用的 docker 命令很厉害,还能这样直接操作。

创建每天一次的任务计划

代码需要每日 00:01:00 执行一次。

vi /etc/crontab

编辑任务计划

#for Split nginx logs
  1  0  *  *  * root bash /data/srv/nginx/clearLog.sh

执行并保存 crontab /etc/crontab
查看任务: crontab -l

关于我
loading