docker 内cron建立定时任务完成nginx 日志轮询切割
docker container 通过crontab 建立定时任务,完成nginx的轮询切割。解决docker内自定义任务无法执行问题。
如果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 ]
问题解决。
更多推荐
所有评论(0)