Nextcloud Cron mithilfe eines Systemd-Timers automatisch ausführen

Wenn die Nextcloud-Administrationsseite meldet, dass Hintergrundprozesse in letzter Zeit nicht ausgeführt wurden, können Aufräumarbeiten, Benachrichtigungen und andere geplante Aufgaben versäumt werden. Auf einem Systemd-Server lässt sich das Problem üblicherweise beheben, indem Nextcloud cron.phpals Webserver-Konto über einen Systemd-Dienst ausgeführt und dieser Dienst anschließend mit einem aktivierten Timer geplant wird. Das aktuelle Nextcloud-Administrationshandbuch enthält ein Beispiel mit zwei Einheiten; die Pfade und das Dienstkonto müssen mit Ihrer Installation übereinstimmen.

Prüfen Sie zuerst, was nicht funktioniert.

Nextcloud-Hintergrundprozesse werden beim cron.phpAufruf ausgeführt. Ein systemd- Dienst definiert den auszuführenden Befehl; ein Timer startet diesen Dienst planmäßig. Falls der Dienst manuell gestartet wird, der Timer aber nicht auslöst, überprüfen Sie die Timer-Aktivierung. Falls der Timer auslöst, der Dienst aber fehlschlägt, prüfen Sie dessen Befehl, die PHP-Umgebung und die Berechtigungen.

Prüfen Sie vor der Bearbeitung, ob das Nextcloud-Verzeichnis und der HTTP-Benutzer korrekt sind. In diesem Beispiel wird von den Benutzerkonten `/usr/local/nextcloud` /var/www/nextcloudund `/usr/local/nextcloud` ausgegangen www-data, die unter Debian und Ubuntu üblich sind. Auf anderen Systemen kann das Konto auch `/usr/local/nextcloud`, ` wwwrun/ apacheusr/local/nextcloud` oder ein anderer Benutzer sein. Nextcloud erfordert, dass die Befehlszeilenbefehle als HTTP-Benutzer ausgeführt werden, damit die Dateibesitzverhältnisse konsistent bleiben. Weitere Informationen finden Sie in der Nextcloud-Dokumentation zu `occ` .

Testen Sie dieselbe PHP-Executable und dasselbe Cron-Skript, das systemd verwenden soll:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

Ersetzen Sie Konto, PHP-Pfad und Nextcloud-Pfad durch die Pfade Ihres Webhosts. Falls der Befehl einen PHP-Fehler, eine fehlende Erweiterung, ein Berechtigungsproblem, den Wartungsmodus oder einen Datenbankverbindungsfehler meldet, beheben Sie dieses Problem zuerst; der Timer kann einen fehlgeschlagenen Befehl nicht reparieren.

Bestätigen Sie, dass Nextcloud den System-Cronjob verwendet.

Öffnen Sie die Administrationseinstellungen → Grundeinstellungen → Hintergrundprozesse und wählen Sie Cron aus , falls es noch nicht ausgewählt ist. Sie können diesen Befehl auch im Nextcloud-Verzeichnis ausführen:

cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron

Nextcloud weist darauf hin, dass die Auswahl von Cron in den Administratoreinstellungen nicht unbedingt erforderlich ist, wenn cron.phpdas Skript über die Kommandozeile ausgeführt wird, da der Modus automatisch festgelegt wird. Die explizite Auswahl macht den gewünschten Produktionsmodus deutlich. Nextcloud empfiehlt für den Produktivbetrieb die Verwendung von System-Cron; in der Dokumentation zu Hintergrundjobs werden auch Systemd-Timer als alternativer Scheduler aufgeführt.

Repariere den systemd-Dienst

Erstellen oder aktualisieren Sie /etc/systemd/system/nextcloudcron.servicedie Datei mit folgendem Inhalt. Verwenden Sie den vollständigen Pfad zu PHP, damit systemd nicht von einer interaktiven Shell abhängt PATH.

[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

Wechseln Sie Userzum Webserver-Konto und den entsprechenden Pfaden zu PHP und Nextcloud. Die Bedingung prüft, ob die Instanz ordnungsgemäß funktioniert, bevor der Job ausgeführt wird. Schlägt die Bedingung fehl, kann systemd den Dienst überspringen. Prüfen Sie, ob Nextcloud im Wartungsmodus ist und überprüfen Sie das Journal, bevor Sie die Bedingung entfernen oder ändern. Behalten Sie die Konfiguration bei KillMode=process, da Nextcloud sie im Beispiel verwendet, damit externe, von cron gestartete Programme nach Beendigung des cron-Prozesses weiterlaufen können. Die Diensteinheit benötigt keinen [Install]Abschnitt.

Repariere und aktiviere den Timer

Erstellen /etc/systemd/system/nextcloudcron.timer. Dieser Zeitplan startet fünf Minuten nach dem Systemstart und wartet dann fünf Minuten nach jeder Dienstaktivierung:

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

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

[Install]
WantedBy=timers.target

Laden Sie systemd neu, damit es die Unit-Dateien liest, und aktivieren und starten Sie dann den Timer mit einem einzigen Befehl:

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

Durch Aktivieren wird der Timer bei zukünftigen Neustarts gestartet; --nowdurch sofortiges Starten wird er gestartet. Aktivieren Sie den Dienst selbst nicht wie einen wiederkehrenden Timer. Der Timer ist die Einheit, die unter „Nextcloud“ gehört timers.target. Das aktuelle Nextcloud-Handbuch erklärt diese Intervalleinstellungen und den erforderlichen Aktivierungsbefehl; ältere Versionen des Handbuchs enthielten einen veralteten Installationsabschnitt für den Dienst, folgen Sie daher stattdessen dem aktuellen Beispiel der Einheit.

Einen fehlgeschlagenen Lauf verfolgen und die Korrektur überprüfen.

Überprüfen Sie den Status des Timers und den nächsten geplanten Lauf:

systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer

Der Timer sollte „Wartend“ oder „Aktiv“ anzeigen, und in der Liste sollte die nächste Aktivierungszeit angegeben werden. Überprüfen Sie anschließend den letzten Lauf des Dienstes:

systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today

Ein Timer kann auch dann aktiv sein, wenn jeder Dienstlauf fehlschlägt. Überprüfen Sie daher beide Einheiten. Falls der Dienst fehlt oder systemd die Datei ablehnt, führen Sie `systemd --get` aus systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, korrigieren Sie den gemeldeten Syntax- oder Pfadfehler und laden Sie systemd anschließend neu. Bei einem fehlerhaften Dienstbeendigungsvorgang weist die Journalausgabe häufig auf einen ungültigen PHP-Pfad, einen falschen Benutzer, eine fehlerhafte Bedingung oder einen Nextcloud-Laufzeitfehler hin. Falls der Timer keinen nächsten Lauf hat, überprüfen Sie den genauen Timer-Dateinamen, führen Sie `systemd --get` aus daemon-reloadund bestätigen Sie, dass er mit `systemd --get` aktiviert wurde systemctl is-enabled nextcloudcron.timer.

Überprüfen Sie nach der nächsten Timer-Aktivierung erneut den Status der Nextcloud-Hintergrundprozesse. Es sollte eine aktuelle Ausführungszeit angezeigt werden, nicht etwa eine Warnung wegen veralteter Einträge. Falls Timer und Dienst erfolgreiche Ausführungen melden, die Admin-Seite aber weiterhin veraltet aussieht, überprüfen Sie die Instanzprotokolle und die vom Webserver verwendete PHP-Version. Die PHP-Version für die Kommandozeile kann sich von der Web-Laufzeitumgebung unterscheiden. Diese Konfiguration beschreibt die Systemd-Planung auf einem herkömmlichen Linux-Host. Containerisierte und Appliance-Installationen verwalten Cron möglicherweise über ihren eigenen Dienst-Supervisor. Verwenden Sie daher die von der jeweiligen Plattform unterstützte Methode, anstatt Host-Units hinzuzufügen, die nicht auf die Dateien des Containers zugreifen können.

Einen Kommentar hinterlassen

Nextcloud Cron mithilfe eines Systemd-Timers automatisch ausführen

Überprüfen Sie den Cron-Modus von Nextcloud, reparieren Sie den Systemd-Dienst und den Timer und vergewissern Sie sich, dass Hintergrundprozesse nach dem Start und anschließend alle fünf Minuten ausgeführt werden.

Nextcloud-Dateisperrwarnung mit Redis beseitigen

Aktivieren Sie die zuverlässige Nextcloud-Dateisperrung, wählen Sie das richtige Redis- oder Valkey-Backend und überprüfen Sie, ob die Warnung verschwindet, ohne dass gleichzeitige Dateiänderungen riskiert werden.

Was nötig ist, um eine A+-Sicherheitsbewertung für Nextcloud zu erreichen

Was nötig ist, um eine A+-Sicherheitsbewertung für Nextcloud zu erreichen

Behebt häufige Nextcloud-Scan-Fehler durch aktuelle Updates, HTTPS und HSTS, präzises Reverse-Proxy-Trust und Überprüfungen gegen den öffentlichen Server.

Aktivieren Sie die serverseitige Verschlüsselung von Nextcloud mit messbaren Auswirkungen

Konfigurieren Sie Nextcloud SSE für den Speicher, der es benötigt, schützen Sie die Verschlüsselungsschlüssel und messen Sie die Übertragungs- und CPU-Auswirkungen, bevor Sie vorhandene Dateien verschlüsseln.

Füge die Elasticsearch-Volltextsuche zu Nextcloud hinzu

Verbinden Sie die Dateisuche von Nextcloud mit Elasticsearch, indizieren Sie Dokumentinhalte und wählen Sie eine Konfiguration, die Ihren Server- und Sicherheitsanforderungen entspricht.

Legen Sie eine zuverlässige Ablaufrichtlinie für gelöschte Nextcloud-Dateien fest.

Legen Sie eine zuverlässige Ablaufrichtlinie für gelöschte Nextcloud-Dateien fest.

Konfigurieren Sie Nextcloud so, dass gelöschte Dateien nach einer festgelegten Aufbewahrungsfrist entfernt werden, Hintergrundprozesse zuverlässig geplant werden und Befehle vermieden werden, die den Papierkorb aller Benutzer leeren.

Warnung „Fehlende Datenbankindizes in Nextcloud“ löschen

Warnung „Fehlende Datenbankindizes in Nextcloud“ löschen

Führen Sie die OCC-Reparatur von Nextcloud sicher durch, sehen Sie sich die Datenbankänderungen in der Vorschau an und prüfen Sie, warum die Warnung möglicherweise weiterhin angezeigt wird.

Nextclouds Upload-Limit über 2 GB hinaus erhöhen

Nextclouds Upload-Limit über 2 GB hinaus erhöhen

Ermöglichen Sie größere Nextcloud-Browser-Uploads, indem Sie die Einstellungen für PHP, Nginx oder Apache, temporären Speicher und Timeout aufeinander abstimmen – und überprüfen Sie, welches Limit die Datei blockiert.

Nextclouds PHP-Speicherwarnung auf dem Webserver beheben

Stellen Sie das PHP-Speicherlimit ein, das Nextcloud tatsächlich verwendet, starten Sie den richtigen Dienst neu und bestätigen Sie die Einstellung von 512 MB in der Admin-Übersicht.

Verbinden Sie einen S3-kompatiblen Bucket mit dem externen Speicher von Nextcloud.

Binden Sie einen kompatiblen Objektspeicher-Bucket in Nextcloud mithilfe des S3-Backends ein, und zwar mit dem richtigen Endpunkt, den richtigen Anmeldeinformationen, dem richtigen Zugriffsbereich und den richtigen Verifizierungsschritten.