Wie kann die logrotate-Ausführung zu "service: not found" führen?

881
PLNech

Ich versuche die Ausgabe meiner Skriptausführung zu verstehen:

Fehler: Fehler beim Ausführen eines freigegebenen Postrotate-Skripts für '/var/log/nginx/*.log' logrotate_script: 2: logrotate_script: service: nicht gefunden Fehler: Fehler beim Ausführen eines nicht gemeinsam genutzten Nachrotationsskripts für / var / log / syslog von '/ var / log / syslog' logrotate_script: 2: logrotate_script: service: nicht gefunden Fehler: Fehler beim Ausführen eines freigegebenen Postrotate-Skripts für '/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 ' 

Soweit ich verstehe, begegnet logrotate einen Fehler während der postrotate des Ausführen von Skripts für nginxund syslogjeweils service nginx rotate >/dev/nullund service rsyslog rotate > /dev/null.

Logrotate-Skript ( /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 wird von cron als root ausgeführt, und das manuelle Ausführen der Postrotate-Skripts ist problemlos möglich:

Crontab-Eintrag (root)

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

Manuelle Nachrotation der Skriptausführung

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


Was könnte diese Botschaft erklären ? service:not found

0
Sie vermissen den Pfad ?! Versuchen Sie / usr / sbin / service JohannesM vor 8 Jahren 0

1 Antwort auf die Frage

0
SiD

Können Sie den Kontext von /etc/logrotate.conf oder eine Datei mit den Regeln der Ngix-Protokollrotation schreiben?

In rh / centos ist 'service' in / sbin / service, aber in debian / ubuntu ist in '/ usr / sbin / service. Hast du einen absoluten Pfad vor oder nach dem Drehen?

Ich habe die Regeln für die Protokollrotation hinzugefügt. Dies sind die Standardeinstellungen des Pakets. Wie Sie sehen, gibt es keinen absoluten Pfad. PLNech vor 8 Jahren 1