Nextcloud-Cronjobs werden mit systemd nicht automatisch ausgeführt – Problembehebung

Um Nextcloud-Hintergrundprozesse mit systemd automatisch auszuführen, konfigurieren Sie einen einmaligen Dienst, der cron.phpals Webserver-Benutzer läuft, und aktivieren Sie einen Timer, der diesen Dienst alle fünf Minuten startet. Die wichtigsten Prüfungen sind: Der Timer ist aktiviert und hat einen nächsten Ausführungszeitpunkt, der Dienst verweist auf die korrekten Pfade zu Nextcloud und PHP, und das Dienstprotokoll zeigt einen erfolgreichen Abschluss an. Ein einmaliger Dienst kann zwischen den Ausführungen als „inaktiv (beendet)“ angezeigt werden; dies ist nach Beendigung normal.

Diese Konfiguration beschreibt eine herkömmliche Nextcloud-Installation unter Ubuntu mit systemd, wobei die Nextcloud-Dateien auf dem Hostsystem verfügbar sind. Läuft Nextcloud in einem Docker-Container, Snap-Container oder einer Appliance wie Nextcloud All-in-One, verwenden Sie die dokumentierte Scheduler-Methode der jeweiligen Distribution, anstatt einen Host-Unit-Pfad auf einen reinen Containerpfad zu verweisen. Die folgenden Beispiele verwenden `/usr/local/nextcloud` /var/www/nextcloudund `/usr www-data/local/nextcloud`; ersetzen Sie diese durch den tatsächlichen Installationspfad und den HTTP-Benutzer auf Ihrem Server.

Was der Timer bewirken soll

Nextcloud cron.phpführt im Hintergrund geplante Aufgaben wie Wartungs- und App-Taktiken aus. Der systemd-Timer dient als Zeitgeber; der Dienst ist der Befehl, der nach Ablauf der Zeit ausgeführt wird. Beides ist erforderlich. Werden die Dateien erstellt, ohne den Timer zu aktivieren, bleibt der Zeitplan inaktiv. Die Aktivierung eines Timers, der auf den falschen PHP- oder Nextcloud-Pfad verweist, kann hingegen zu wiederholten Fehlschlägen führen.

Nextcloud empfiehlt für Hintergrundprozesse im Produktivbetrieb die Verwendung von Cron-Jobs. Das aktuelle Administrationshandbuch beschreibt alternativ auch die Verwendung von Systemd-Timern. Der Beispielzeitplan startet fünf Minuten nach dem Systemstart und plant anschließend einen weiteren Lauf fünf Minuten nach jeder Dienstaktivierung. Dadurch wird vermieden, dass ein Benutzer die Weboberfläche aufrufen muss.

1. Installationspfad, Benutzer und PHP-CLI bestätigen.

Bevor Sie Einheiten bearbeiten, suchen Sie das eigentliche Nextcloud-Verzeichnis und prüfen Sie, welchen PHP-Befehl die Webserver-Installation erwartet. Bei einer typischen Ubuntu-Archivinstallation lautet der Pfad beispielsweise `/usr/local/bin` /var/www/nextcloud, der Webbenutzer ist oft `/usr/bin` www-dataund die PHP-Befehlszeilenschnittstelle ist `php-cli` /usr/bin/php. Überprüfen Sie dies, anstatt es anzunehmen.

ls -l /var/www/nextcloud/cron.php
command -v php
php -v

Befindet sich Ihr Nextcloud-Verzeichnis an einem anderen Ort, ersetzen Sie dieses Verzeichnis in beiden unten stehenden Unit-Befehlen. Nutzt der Webserver eine andere PHP-Version, verwenden Sie die entsprechende CLI-Datei dieser Version ExecStart. ExecConditionEin systemd-Dienst erbt weder den PATH noch die Umgebung der interaktiven Shell; daher sind explizite Pfade zuverlässiger.

Testen Sie die Statusprüfung unter demselben Benutzer, den systemd verwenden wird:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ status -e

Der Nextcloud- occBefehl sollte als HTTP-Benutzer ausgeführt werden, um die korrekten Dateibesitzverhältnisse und Berechtigungen zu gewährleisten. Falls dieser Test einen PHP-Fehler, den Wartungsmodus oder eine fehlende Datei meldet, beheben Sie dies bitte zuerst; der Timer kann einen fehlgeschlagenen Nextcloud-Befehl nicht kompensieren.

2. Erstellen Sie den einmaligen Dienst

Erstellen /etc/systemd/system/nextcloudcron.service:

sudo nano /etc/systemd/system/nextcloudcron.service

Geben Sie diese Einheit ein und passen Sie Pfad und Benutzername an, falls Ihre Installation abweicht:

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

ExecConditionPrüft vor dem Start des Hintergrundprozesses, ob Nextcloud ordnungsgemäß funktioniert. Schlägt dies fehl, überspringt systemd die Ausführung; die Ursache lässt sich im Journal nachlesen. KillMode=processErmöglicht es externen Programmen, die von einem Hintergrundprozess gestartet wurden, nach Beendigung des Haupt-Cron-Prozesses fortzufahren. Das aktuelle Nextcloud-Beispiel benötigt keinen entsprechenden [Install]Abschnitt in dieser Dienstdatei.

Die Verwendung /usr/bin/phpist nur dann angebracht, wenn es sich um den korrekten CLI-Interpreter auf Ihrem Server handelt. Beispielsweise kann ein benutzerdefiniertes PHP-Repository eine versionierte Binärdatei installieren. Verwenden Sie dieselbe kompatible PHP-Version, die Nextcloud benötigt und die in der Webserver-Konfiguration verwendet wird.

3. Timer erstellen

Erstellen /etc/systemd/system/nextcloudcron.timer:

sudo nano /etc/systemd/system/nextcloudcron.timer

Hinzufügen:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

OnBootSecDie erste Ausführung wird fünf Minuten nach dem Start von systemd beim Systemstart geplant. OnUnitActiveSecEine weitere Ausführung erfolgt fünf Minuten nach der letzten Aktivierung des Dienstes. Der Timer ist nicht mit dem Dienst selbst identisch: Aktivieren und starten Sie die .timerUnit, damit die geplante Ausführung automatisch erfolgt.

4. Laden Sie systemd neu und aktivieren Sie den Timer.

Weisen Sie systemd an, die neuen Unit-Dateien zu lesen, und aktivieren und starten Sie dann den Timer mit einem einzigen Befehl:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

Überprüfen Sie den Timer:

systemctl status nextcloudcron.timer
systemctl list-timers --all | grep nextcloudcron

Der Timer sollte geladen und aktiv sein und list-timersunter „NÄCHSTES“ eine zukünftige Zeit anzeigen. Falls er deaktiviert oder nicht geladen ist oder keine nächste Aktivierung angezeigt wird, überprüfen Sie, ob der Dateiname auf „.js“ endet .timer, der [Install]Abschnitt „.js“ enthält WantedBy=timers.targetund Sie den Timer daemon-reloadnach dem Speichern der Dateien ausgeführt haben.

5. Führen Sie einen Test durch und überprüfen Sie dessen Ergebnis.

Sie können den Dienst einmalig starten, ohne auf den nächsten Timer-Tick warten zu müssen:

sudo systemctl start nextcloudcron.service
sudo systemctl status nextcloudcron.service
sudo journalctl -u nextcloudcron.service -n 50 --no-pager

Prüfen Sie das Ergebnis des Dienstes und eventuelle PHP- oder Nextcloud-Fehler. Nach Abschluss des Befehls nextcloudcron.servicekann es zu einer Fehlermeldung kommen, inactive (dead)da es sich um eine einmalige Aufgabe handelt. Das allein bedeutet nicht, dass der Befehl fehlgeschlagen ist. Der Timer sollte aktiv bleiben und den nächsten Lauf planen; im Protokoll sollte vermerkt sein, ob der vorherige Lauf erfolgreich beendet wurde.

Öffnen Sie in den Nextcloud-Administrationseinstellungen den Bereich „Status von Hintergrundprozessen“ und vergewissern Sie sich, dass die Ausführungszeit des letzten Prozesses nach dem Auslösen des Timers fortschreitet. Die Warnmeldung in der Übersicht sollte verschwinden, sobald Nextcloud kürzlich Hintergrundaktivität erkennt. Warten Sie nach der Aktivierung des Timers mindestens ein Intervall ab, bevor Sie davon ausgehen, dass der Zeitplan nicht ausgeführt wurde.

Diagnostizieren Sie die häufigsten Fehlermuster

Was Sie sehenWas zu überprüfen istNächster Schritt
Der Timer ist „inaktiv“ oder deaktiviert.Ob die Zeitschaltuhr aktiviert und gestartet wurdeAusführen sudo systemctl enable --now nextcloudcron.timer, dann prüfensystemctl list-timers
Der Timer ist aktiv, aber der Dienst schlägt fehl.Das Dienstjournal, die PHP-Ausführungsdatei, der Nextcloud-Pfad und der DienstbenutzerFühren Sie den Statustest aus www-data; beheben Sie den ersten gemeldeten PHP- oder Dateiberechtigungsfehler.
Der Dienst ist zwischen den Ausführungen inaktiv.Die nächste Zeit des Timers und der letzte Journaleintrag des Dienstes.Wenn der Dienst erfolgreich beendet wurde und der Timer weiterhin aktiv ist, ist dies normal für eine einmalige Einheit.
Der Dienst wird beendet, ohne ausgeführt zu werden.cron.phpDas ExecConditionErgebnis und ob sich Nextcloud im Wartungsmodus befindetBeheben Sie den Fehler und überprüfen Sie den Nextcloud-Status, bevor Sie den Auftrag manuell neu starten.
Die Admin-Seite meldet weiterhin, dass der Cronjob nicht ausgeführt wurde.Ob der Dienst tatsächlich die richtige Instanz aufruft und ob sich deren letzte Ausführungszeit ändertWarten Sie ein bestimmtes Zeitintervall ab, überprüfen Sie die Protokolle und stellen Sie sicher, dass Sie dieselbe Nextcloud-Installation überprüfen.

Für weitere Details überprüfen Sie bitte die aktuellen Dienstprotokolle und die Nextcloud-Protokolldatei:

sudo journalctl -u nextcloudcron.service --since "30 minutes ago" --no-pager
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ background-job:list

Die Aufgabenliste zeigt zwar registrierte Arbeit an, ist aber allein kein Beweis dafür, dass der Timer ausgeführt wird. Verwenden Sie daher gemeinsam die letzte und nächste Aktivierungszeit des Timers, das Dienstjournal und die Anzeige des letzten Laufs in Nextcloud.

Wann sollte ein anderer Zeitplaner verwendet werden?

Systemd-Timer funktionieren gut, wenn der Server systemd verwendet und Sie einen lokalen, vom Dienst verwalteten Zeitplan benötigen. Wenn Sie bereits einen Standard-Cron-Daemon betreiben und dessen Crontab überprüfen können, wird auch ein System-Cron-Eintrag unterstützt, der denselben Aufruf cron.phptätigt www-data. Planen Sie nicht beide Methoden für dieselbe Nextcloud-Instanz; sich überschneidende Aufrufe können Ressourcen verschwenden und die Fehlersuche erschweren.

Die AJAX-Planung ist abhängig von den Zugriffen der Nutzer auf Nextcloud und daher auf stark frequentierten Servern oder Servern mit mehreren Nutzern weniger zuverlässig. Webcron-Aufrufe erfolgen cron.phpüber HTTP und eignen sich möglicherweise für sehr kleine Instanzen, auf denen kein Systemzugriff möglich ist. Nextcloud weist jedoch darauf hin, dass die Webausführung die Menge der pro Aufruf ausführbaren Aufgaben begrenzt. Wenn Nextcloud in einem Container ausgeführt oder von einer Appliance verwaltet wird, verwenden Sie den unterstützten Scheduler oder die Containerkonfiguration. Ein Host-Dienst /var/www/nextcloudfunktioniert nicht, wenn der entsprechende Pfad auf dem Host nicht vorhanden ist.

Eine korrekte Konfiguration zeichnet sich durch einen aktivierten Timer mit wiederkehrender Ausführungszeit, fehlerfreie Dienstausführungen und eine fortlaufende Nextcloud-Letzte-Zeit aus. Sind alle drei Bedingungen erfüllt, aber eine bestimmte App-Aufgabe dennoch verzögert erscheint, kann es sein, dass der Scheduler aktiv ist, während diese Aufgabe auf ihren eigenen Zeitplan, ein Wartungsfenster oder die Einhaltung der Warteschlangenbedingungen wartet. Untersuchen Sie diese Aufgabe separat, bevor Sie das Timer-Intervall ändern.

Offizielle Referenzen

Einen Kommentar hinterlassen

Die 10 besten Ping-Sweep-Tools zum Auffinden von Geräten in Ihrem Netzwerk

Die 10 besten Ping-Sweep-Tools zum Auffinden von Geräten in Ihrem Netzwerk

Vergleichen Sie 10 Ping-Sweep-Tools für die schnelle LAN-Erkennung, plattformübergreifende Scans und IP-Adressverwaltung. Erfahren Sie, was ein Sweep liefern kann – und was nicht.

Die 6 besten Netzwerkmanagement-Tools zur Leistungsüberwachung

Die 6 besten Netzwerkmanagement-Tools zur Leistungsüberwachung

Vergleichen Sie sechs Netzwerkmanagement-Tools für die Leistungsüberwachung, einschließlich SNMP-Abdeckung, Mapping, Warnmeldungen, Bereitstellungsmodelle und Kosten-Nutzen-Verhältnisse.

Die besten WLAN-Analysatoren für Windows, iOS und Android

Die besten WLAN-Analysatoren für Windows, iOS und Android

Vergleichen Sie die besten Wi-Fi-Analyseprogramme für Windows, iPhone und Android, einschließlich Tools für Kanalüberlastung, Signalabdeckung, Heatmaps und Netzwerk-Fehlerbehebung.

QoS in Netzwerken: Was Quality of Service bewirkt und wie es funktioniert

QoS in Netzwerken: Was Quality of Service bewirkt und wie es funktioniert

Erfahren Sie, was QoS in der Netzwerktechnik bedeutet, wie DSCP-Markierungen und Datenverkehrswarteschlangen Sprach-, Video- und Geschäftsanwendungen priorisieren und was QoS nicht beheben kann.

Beste SFTP-Server-Software für sichere Dateiübertragungen

Beste SFTP-Server-Software für sichere Dateiübertragungen

Vergleichen Sie zuverlässige SFTP-Server-Software für Windows und Linux, darunter OpenSSH, Bitvise, SolarWinds und SFTPGo. Finden Sie die passende Lösung für Ihre Sicherheits- und Dateitransferanforderungen.

Die 10 besten Tools zum Scannen und Analysieren drahtloser Geräte für Windows, iOS und Android

Die 10 besten Tools zum Scannen und Analysieren drahtloser Geräte für Windows, iOS und Android

Vergleichen Sie 10 Tools zum Scannen und Analysieren drahtloser Netzwerke für Windows, iOS und Android mit klaren Hinweisen zu Wi-Fi-Kanälen, Abdeckungskarten, LAN-Prüfungen und Plattformbeschränkungen.

Bewährte Methoden für die Netzwerküberwachung: Was sollte überwacht werden und welche Tools eignen sich?

Bewährte Methoden für die Netzwerküberwachung: Was sollte überwacht werden und welche Tools eignen sich?

Erstellen Sie eine praktische Netzwerküberwachung mit klarer Geräteabdeckung, nützlichen Leistungskennzahlen, umsetzbaren Warnmeldungen und einem Vergleich von SolarWinds NPM, PRTG und OpManager.

Die 7 besten IP-Adressverwaltungstools für Netzwerkteams

Die 7 besten IP-Adressverwaltungstools für Netzwerkteams

Vergleichen Sie sieben IP-Adressverwaltungstools für Subnetzerkennung, DNS- und DHCP-Koordination, Netzwerkinventarisierung und Open-Source-IPAM.

Die 10 besten Netzwerk-Scanner-Tools zur Erkennung von Geräten und IPs

Die 10 besten Netzwerk-Scanner-Tools zur Erkennung von Geräten und IPs

Vergleichen Sie Netzwerk-Scanner-Tools für die schnelle Geräteerkennung, plattformübergreifende IP-Scans und Enterprise IPAM mit Hinweisen zur Auswahl der passenden Option für Ihr Netzwerk.

Wie man Nmap für Traceroute verwendet und den Netzwerkpfad liest

Wie man Nmap für Traceroute verwendet und den Netzwerkpfad liest

Verwenden Sie die Option --traceroute von Nmap, um Hops einem autorisierten Host zuzuordnen, die Hop- und RTT-Ausgabe zu verstehen und fehlende Antworten zu beheben, ohne übermäßig zu scannen.