2017-11-13 8 views
0

Ich habe den folgenden Cronjob für meinen Root-Benutzer auf meinem VPS festgelegt. Der Befehl selbst funktioniert, wenn ich ihn als Root-Benutzer ausführe.Cronjob läuft nicht auf Root-Benutzer

30 2 * * * service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null 

Allerdings funktioniert es nicht, da ich sehen kann, dass mein SSL-Zertifikat nicht erneuert wird.

Wenn ich cat /var/log/cron laufen kann ich sehen, die folgende

Nov 13 02:30:01 server CROND[2307]: (root) CMD (service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null) 

Welche lief es scheint darauf hinzudeuten, aber klar ist es nicht getan, was es soll.

Andere Cronjobs auf meinem normalen Benutzer scheinen gut zu funktionieren, aber ich kann diesen Benutzer nicht für die Crons verwenden, da ich Nginx für diesen Cron vorübergehend stoppen muss.

Irgendwelche Ideen, wie ich weiter debuggen und es aussortieren kann?

* Edit: *

Ich habe versucht, es laufen zu protokollieren und der folgende Fehler wurde im Protokoll /bin/sh: service: command not found

+0

Direkte Ausgabe in eine Protokolldatei anstelle von/dev/null. Was bekommst du? – TurtlesAllTheWayDown

+0

@TurtlesAllTheWayDown siehe meine Bearbeitung. – Shiv

+0

Sie müssen die Befehlsliste wahrscheinlich in Klammern einschließen, um ihre kombinierte Ausgabe in eine Protokolldatei umzuleiten. –

Antwort

0

Das Problem wurde gezeigt, dass die service Befehl in der crons PATH war nicht so hatte ich den vollständigen Pfad verwenden, der /sbin/service ist.

Das ist meine letzte cron Befehl gemeint war

30 2 * * * (/sbin/service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && /sbin/service nginx start) > /dev/null 2>&1 

die jetzt funktioniert.

Es sieht wie eine allgemeine Regel aus, den vollständigen Pfad zu irgendwelchen Shellbefehlen zu spezifizieren ist Best Practice.