废话不多说直接看脚本
#!/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