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