logrotate执行为什么会导致“服务:未找到”?

logrotate执行为什么会导致“服务:未找到”?

我试图了解我的 logrotate 脚本执行的输出:

错误:运行“/var/log/nginx/*.log”的共享 postrotate 脚本时出错
logrotate_脚本:2:logrotate_脚本:无法提供服务
错误:为“/var/log/syslog”的 /var/log/syslog 运行非共享的 postrotate 脚本时出错
logrotate_脚本:2:logrotate_脚本:无法提供服务
错误:运行“/var/log/mail.info”的共享 postrotate 脚本时出错
/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/用户.log
/var/log/lpr.log
/var/log/cron.log
/var/log/调试
/var/log/消息'

据我了解,logrotate 在分别运行和和的nginxpostrotate脚本时遇到错误。syslogservice nginx rotate >/dev/nullservice 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 以 root 身份通过 cron 运行,并且手动运行 postrotate 脚本没有问题:

Crontab 条目(根)

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

手动执行 postrotate 脚本

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


什么可以解释这一点service:not found信息 ?

答案1

您能写出 /etc/logrotate.conf 或文件的上下文以及 ngix 日志轮换规则吗?

在 rh/centos 中,“service”位于 /sbin/service,但在 debian/ubuntu 中位于 '/usr/sbin/service。您在旋转前或旋转后有绝对路径吗?

相关内容