Я пытаюсь понять результат выполнения моего скрипта logrotate:

error: error running shared postrotate script for '/var/log/nginx/*.log '
logrotate_script: 2: logrotate_script: service: not found
error: error running non-shared postrotate script for /var/log/syslog of '/var/log/syslog '
logrotate_script: 2: logrotate_script: service: not found
error: error running shared postrotate script for '/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 '

Насколько я понимаю, logrotate сталкивается с ошибкой при запуске постротационных сценариев для nginx и syslog , соответственно service nginx rotate >/dev/null и service rsyslog rotate > /dev/null .

Сценарий Logrotate (/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
}

Logrotate запускается через cron от имени пользователя root, и запуск сценариев postrotate вручную проходит без проблем:

Запись в Crontab (root)

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

Ручное выполнение постротационного скрипта

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


Чем мог объяснить этот service: not found сообщение?

1 ответ1

0

Можете ли вы написать контекст /etc/logrotate.conf или файл с правилами ротации журналов ngix?

В rh/centos 'service' находится в /sbin /service, но в debian /ubuntu находится в '/usr /sbin /service. У вас есть абсолютный путь до или после поворота?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .