Como a execução de rotação de log pode resultar em "serviço: não encontrado"?


0

Estou tentando entender a saída da minha execução de script logrotate:

error: erro ao executar o script postrotate compartilhado para '/var/log/nginx/*.log'
logrotate_script: 2: logrotate_script: service: not found
erro: erro ao executar o script postrotate não compartilhado para / var / log / syslog de '/ var / log / syslog'
logrotate_script: 2: logrotate_script: service: not found
error: erro ao executar o script postrotate compartilhado para '/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/ var / log / debug
/ var / log / messages '

Tanto quanto eu entendo, o logrotate encontra um erro ao executar os scripts pós-rotação para nginxe syslog, respectivamente service nginx rotate >/dev/nulle service rsyslog rotate > /dev/null.

Script de logrotação ( /etc/logrotate.d/nginx)

/var/log/nginx/*.log {
    daily
    missingok
    rotate 365
    compress
    delaycompress
    notifempty
    create 0640 www-data www-data
    olddir /var/log/archives/nginx
    sharedscripts
    prerotate
            if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                    run-parts /etc/logrotate.d/httpd-prerotate; \
            fi \
    endscript
    postrotate
            invoke-rc.d nginx rotate >/dev/null 2>&1
    endscript
}

O logrotate é executado através do cron como root e a execução manual dos scripts pós-rotate ocorre sem problemas:

Entrada do Crontab (raiz)

00 00 * * * /usr/sbin/logrotate -s /var/lib/logrotate/status /etc/logrotate.conf

Execução manual de script pós-rotação

$ invoke-rc.d nginx rotate >/dev/null 2>&1 && echo $? 
0


O que poderia explicar essa mensagem? service:not found


Você está perdendo o caminho ?! Tente / usr / sbin / service
JohannesM

Respostas:


0

Você pode escrever o contexto de /etc/logrotate.conf ou arquivo com as regras de rotação de log do ngix?

No rh / centos, 'service' está em / sbin / service, mas no debian / ubuntu está em '/ usr / sbin / service. Você tem um caminho absoluto na pré ou pós-rotação?


1
Eu adicionei as regras de rotação de log, que são o padrão do pacote. Como você pode ver, não há caminho absoluto.
PLNech
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.