logrotate cron job não está girando determinados logs

4

Eu adicionei dois scripts no diretório "logrotate.d" para os logs do meu aplicativo serem rotacionados. Esta é a configuração de um deles:

<myLogFilePath> {
  compress
  copytruncate
  delaycompress
  dateext
  missingok
  notifempty
  daily
  rotate 30
}

Existe um script "logrotate" no diretório "cron.daily" (que parece rodar diariamente conforme os registros do cron):

#!/bin/sh

echo "logrotate_test" >>/tmp/logrotate_test
#/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
/usr/sbin/logrotate -v /etc/logrotate.conf &>>/root/logrotate_error

EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

A primeira instrução echo está funcionando.
Mas eu acho que os logs do meu aplicativo não estão sendo rotacionados, enquanto outros logs como o httpd estão sendo rotacionados **
** E eu também não vejo nenhuma saída no mencionado arquivo "logrotate_error"
(tem permissão de gravação para todos os usuários).

No entanto, o syslog diz: "logrotate: o ALERT saiu anormalmente com [1]"

Mas quando eu executo o mesmo "logrotate" no script "cron.daily" manualmente, tudo parece estar funcionando bem.

Por que não está girando durante a programação diária de cron? Estou fazendo algo errado aqui?
Seria ótimo se eu recebesse essa ajuda tão necessária.

ATUALIZADO: Parece que é por causa do selinux - os arquivos de log no diretório inicial do meu usuário possuem restrições impostas pelo selinux e o script quando o logrotate é executado:

SELinux is preventing /usr/sbin/logrotate from getattr access on the file /home/user/logs/application.log
    
por user2206396 27.03.2013 / 07:00

1 resposta

6

O SELinux estava restringindo o acesso ao logrotate em arquivos de log em diretórios que não possuem o tipo de contexto do arquivo SELinux requerido. O diretório "/ var / log" tem o contexto do arquivo "var_log_t" , e o logrotate foi capaz de fazer o necessário. Então a solução foi configurar isso nos arquivos de log do meu aplicativo e no diretório pai:

semanage fcontext -a -t var_log_t <directory/logfile>
restorecon -v <directory/logfile>
    
por 24.05.2013 / 20:24