Nginxlog自动切割

xiaoxiao2021-02-28  79

废话不多说直接看脚本

#!/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

转载请注明原文地址: https://www.6miu.com/read-29797.html

最新回复(0)