Como limpar os arquivos de log periodicamente?

1

Eu sou novo em scripts de shell. Eu quero limpar os arquivos de log em um diretório com base nas datas. Eu consegui reunir esse código:

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

Esse script me dá saída quando eu insiro assim:

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

Ele limpará todos os arquivos de log até a data de execução do script.

Mas eu quero que, se eu executar este script, eu possa limpar os arquivos de log por vezes outros dos últimos 10 dias, ou seja, se eu executar isso hoje (24/06/2015), Eu posso limpar os arquivos de log antes da data 14/06/2015.

Além disso: em vez de digitar o caminho completo do diretório, posso armazená-lo em uma variável e apenas digitar esse nome de variável (em vez de digitar o caminho completo do diretório)?

Por exemplo, em vez de inserir /home/u01/app/oracle/servers/DIR1/logs , estou procurando um procedimento no qual eu possa inserir DIR1 para que ele possa entrar nesse diretório sem o caminho total.

    
por mahesh 24.06.2015 / 20:40

1 resposta

3

Existe uma ferramenta chamada logrotate ler a página de manual man logrotate é iniciada pelo cron e provavelmente já está limpando o diretório de log você pode adicionar seus próprios arquivos de configuração para /etc/logrotate.d

    
por 24.06.2015 / 20:54