Nginx log 自动切割

废话不多说直接看脚本

#!/bin/bash
# This script run at 00:00
echo "start cut nginx logs"
#nginx日志目录
nginxdir="/home/nginx/log"

echo "log dir:"$nginxdir
function cutNginxLog1 ()
{
    dir=$1
    suffix=$(date -d "yesterday" +"%Y%m%d")
    mv ${dir}/access.log ${dir}/access.$suffix.log
        mv ${dir}/error.log ${dir}/error.$suffix.log
}

cutNginxLog1   ${nginxdir}
# reload nginx Nginx pid文件
nginxpid=$(cat /home/nginx/nginx.pid)
echo "nginx pid:"$nginxpid
kill -HUP $(cat /home/nginx/nginx.pid)
echo "nginx lod cut  success!"

遇到的问题:
1.: #!/bin/bash: 没有那个文件或目录
解决办法,把脚本拷贝到本地,使用notepad 转换为ANSI编码格式,解决
2.命令不存在 错误提示是:: command not found。bad interpreter: No such file or directory。
解决办法:在vim中,输入:set ff=unix,同样也是转换成unix的格式。

我们需要定时的调用这个脚本才能切日志,可以利用Linux自带的定时功能crontab -e进行设置,内容如下:
00 00 * * * /bin/sh /home/iteblog/mvlogs.sh

  crontab配置计划任务的书写格式
  分钟 小时 日 月 周 [用户名] 命令
  说明:

  第一个参数定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59
  第二个参数定义的是:小时,表示从第几个小时来执行,范围是从0-23
  第三个参数定义的是:日期,表示从每个月的第几天执行,范围从1-31
  第四个参数定义的是:月,表示每年的第几个月来执行,范围从1-12
  第五个参数定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日。
  每六个参数定义的是:用户名,也就是执行程序要通过哪个用户来执行,这个一般可以省略;
  第七个参数定义的是:执行的命令和参数。
  设置完成之后,这个脚本就会在每天的00:00进行切日志操作。下面是我网站切除日志的格式

超过90天的日志文件 删除
00 03 * * * find /home/connect/nginx/logs/ -type f -mtime +90 -delete

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值