我试图了解我的 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 在分别运行和和的nginx
postrotate脚本时遇到错误。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 以 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。您在旋转前或旋转后有绝对路径吗?