logrotate funciona quando executado manualmente, não quando executado com o cron

2

Isso está no Ubuntu Server 14.04, mas acho que é aplicável a todos os sistemas operacionais. Estou executando logrotate como uma tarefa do cron, as configurações do cron são os padrões ( logrotate existe em /etc/cron.daily ). Eu estou executando um programa que é mimado com o seu arquivo de log - o programa não termina quando o arquivo de log é tocado, mas ele pára de fazer qualquer coisa.

Eu defino logrotate com a configuração abaixo, os scripts em questão não fazem nada além de parar e iniciar o programa dado. Quando eu corro logrotate -vf /etc/logrotate.conf ele funciona perfeitamente - o programa é morto, todos os logs são girados e o programa é reiniciado. Quando ele é executado automaticamente, no entanto, algo não está funcionando - eu me levanto de manhã e o programa está em execução, mas não faço nada como se seu arquivo de log fosse tocado durante a execução. O log é girado, então logrotate fez isso, mas aparentemente ele não parou / iniciou o programa corretamente. Os scripts usam caminhos completos em todos os pontos, nada é encurtado.

O logrotate é executado como root com suas configurações padrão ( logrotate in /etc/cron.daily )? Se não, como posso fazer isso? Isso é mesmo o problema?

Arquivo de configuração com informações específicas do arquivo removidas (exceto o arquivo com problemas):

# see "man logrotate" for details
# rotate log files weekly
weekly

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may be configured here
/home/username/.local/share/bot/bot.log {
    compress
    daily
    nomail
    rotate 14
    prerotate
        /home/username/botscripts/wbstop.sh
    endscript
    postrotate
        /home/username/botscripts/wbstart.sh
    endscript
}

Caso seja útil, esses são os dois scripts. O programa leva alguns segundos para desligar, e é por isso que ele dorme. wbstop.sh :

#!/bin/sh
pkill -INT -f bot.py
sleep 8

wbstart.sh :

#!/bin/sh
sleep 5
python3 /home/username/bot/bot.py &
    
por vaindil 11.01.2016 / 16:17

0 respostas