如果nginx安装在宿主机上,可以直接执行crontab  -e 给脚本添加定时任务即可。

如果nginx安装在docker容器中,就需要事先执行以下步骤:

 

1.安装crontab:

[root@CentOS ~]# yum install vixie-cron

[root@CentOS ~]# yum install crontabs

 

2.启动crond服务

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

 

3.编写脚本

 

#!/bin/sh

Dateformat=$(date +%Y%m%d)

Basedir="/usr/local/nginx"

Nginxlogdir="$Basedir/logs"

Logname="access"

[ -d $Nginxlogdir ] && cd$Nginxlogdir || exit 1

[ -f ${Logname}.log ] || exit 1

/bin/mv ${Logname}.log${Dateformat}_${Logname}.log

$Basedir/sbin/nginx -s reload

 

4.crontab  -e 添加用户操作

 

20 11 *  *  *  /server/scripts/cut_nginx_log.sh

每天11点20分自动执行该脚本

 

5.设置/etc/pam.d/crond文件

 

由于镜像最简化安装,所以crond程序是无日志的,此时等待几分钟时间是无法出现Date+access.log文件的,由此判断crond程序没有正常工作,我们需要修改文件如下:

 

# cat /etc/pam.d/crond

#session   required   pam_loginuid.so      #注释此行修改成下一行

session   sufficient   pam_loginuid.so

# /etc/init.d/crond restart

Stopping crond:                                           [  OK  ]

Starting crond:                                           [  OK  ]

 

问题解决。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐