如何定期清除日志文件?

如何定期清除日志文件?

我是 shell 脚本新手。我想根据日期清除目录中的日志文件。我已经设法收集了这个代码:

DIR1='/home/u01/app/oracle/servers/DIR1/logs'
DIR2='home/u01/app/oracle/servers/DIR2/logs'
DIR3='home/u01/app/oracle/servers/DIR3/logs'
Admin='/home/u01/app/oracle/fmw/admin_poc001/domain/domain_IAM_POC01/servers/AdminServer/logs'

echo "Enter the path"
read path
if [ $path == $DIR1 || $path == $DIR2 || $path == DIR3 || $path == $Admin ]
then
  echo  $path "check your path"

find $path -mtime +10 --# This line here "10" represents listing out the last 10 days logs
for i in *.log* *.out*
do
  cat /dev/null >"$i"
done
else
echo "Re-enter the Correct path"
read path
fi

当我给出如下输入时,该脚本会给出输出:

Enter your path :
/home/u01/app/oracle/servers/DIR1/logs

它将清除运行该脚本之日之前的所有日志文件。

但我希望如果我运行这个脚本,我可以多次清除日志文件其他比过去 10 天,即,如果我今天运行(24/06/2015),那么我可以清除 14/06/2015 之前的日志文件。

另外:我可以将其存储在变量中并仅键入该变量名称(而不是输入完整目录路径),而不是输入完整目录路径吗?

例如,/home/u01/app/oracle/servers/DIR1/logs我不是在寻找一个可以直接输入的程序目录1这样它就可以进入该目录而无需总路径。

答案1

有一个名为logrotate“阅读手册页”的工具man logrotate,它由 cron 启动,并且可能已经清理了日志目录,您可以将自己的配置文件添加到其中/etc/logrotate.d

相关内容