logrotate não está executando script de shell personalizado em postrotate

4

Eu tenho o seguinte arquivo de configuração logrotate

/home/application/*/shared/log/*.log {
  daily
  rotate 10
  missingok
  nocompress
  notifempty
  copytruncate
  sharedscripts
  postrotate
    echo "Hi....." 
    /home/application/test.sh > /home/application/test_bash.log 2>&1
    echo "By....."
  endscript
}

/home/application/test.sh atualmente está seguindo o conteúdo (eu tento no shell script criar arquivo fictício também, mas nenhum sucesso)

#!/bin/sh

echo "=============================================="

Quando executo o logrotate, todos os arquivos são rotacionados com sucesso, mas o script test.sh não é executado

O potput de logrotate é o seguinte:

executando o script postrotate executando o script com arg /home/application//shared/log/.log: "     eco "Oi ....."     /home/application/test.sh > /home/application/test_bash.log 2 > & 1     eco "por ....." "

O arquivo de log

/home/application/test_bash.log não é criado.

Eu até mesmo tentei um exemplo simples como esse

/home/application/*/shared/log/*.log { 
  daily 
  rotate 10 
  missingok 
  nocompress 
  notifempty 
  copytruncate 
  sharedscripts 
  postrotate 
    mkdir /home/application/demo_v2/shared/log/arch 
  endscript 
}

Por que o logrotate não está executando meu script de shell? O que estou fazendo incorreto?

    
por user1124133 31.07.2012 / 15:15

2 respostas

1

Como alguém disse anteriormente, os comandos "echo" falharão, já que o logrotate não possui TTY, então você pode tentar ...

echo "Hi....." > /home/application/test_bash.log
/home/application/test.sh >> /home/application/test_bash.log 2>&1
echo "By....." >> > /home/application/test_bash.log

Não está claro o que o logrotate pode fazer se você tentar algo como o echo sem um TTY.

A saída de - logrotate -dvf - parece indicar que seu script foi executado.

Primeiro, tente algo simples como - echo foo > /home/application/test_bash.log 2 > & 1

Se isso funcionar, o script deve ser fácil de depurar.

    
por 14.07.2015 / 02:41
0

O Logrotate não possui um TTY mágico anexado; onde você esperava que essa saída fosse gravada?

Normalmente, é executado um script que redireciona sua saída para um dlog dedicado e evita a emissão de qualquer coisa no stdout; parece que você confundiu vários conceitos acima.

Talvez, se soubéssemos o que é que você realmente deseja fazer com esse script de logrotate, alguém poderia ajudar.

    
por 31.07.2012 / 15:45