Führen Sie ownCloud-Hintergrundprozesse zuverlässig mit einem Systemd-Timer aus.

Wenn die ownCloud-Administrationsseite meldet, dass keine Hintergrundprozesse ausgeführt werden, können geplante Aufräumarbeiten und andere Aufgaben verzögert ausgeführt werden, bis jemand die Website besucht. Auf einem Linux-Server, der von systemd verwaltet wird, konfigurieren Sie den ownCloud-Hintergrundprozessmodus für Cron und verwenden Sie einen Timer, der occ system:cronunter dem Webserver-Konto ausgeführt wird. Die aktuelle ownCloud-Server-Dokumentation empfiehlt die Verwendung von systemd cron für regelmäßige Hintergrundprozesse und weist ausdrücklich auf systemd-Timer als weitere Möglichkeit zur Befehlsplanung hin.

Diese Anleitung gilt für ownCloud Server Classic, das direkt auf einem Linux-Host installiert ist. Sie gilt nicht für ownCloud Infinite Scale, das eine andere Architektur aufweist, oder für das offizielle ownCloud-Docker-Image, das bereits intern cron ausführt. Verwenden Sie für Docker die dokumentierten Einstellungen des Images, anstatt einen zweiten Host-Timer zu erstellen. Weitere Informationen finden Sie in der aktuellen Dokumentation zu Hintergrundjobs von ownCloud Server .

Überprüfen Sie den Befehl, bevor Sie den Zeitplan ändern.

Ein systemd- Dienst definiert den auszuführenden Befehl; ein Timer startet diesen Dienst regelmäßig. Überprüfen Sie zunächst den ownCloud-Installationspfad und das HTTP-Serverkonto. Die folgenden Beispiele verwenden `/etc/localhost` /var/www/owncloudund www-data`/etc/localhost`, die unter Debian und Ubuntu üblich sind. Andere Linux-Distributionen verwenden möglicherweise `/etc/localhost` wwwrun, apache`/etc/localhost` oder ein anderes Konto.

Führen Sie den ownCloud-Befehl manuell mit diesem Konto aus, um einen fehlerhaften Befehl von einem fehlerhaften Zeitplan zu unterscheiden:

sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron

Ändern Sie die PHP-Ausführungsdatei und den Pfad occentsprechend Ihrem Server. ownCloud empfiehlt die Verwendung von PHP system:cronfür Hintergrundprozesse; ältere Anleitungen, die die Ausführung planen, cron.phpbeziehen sich möglicherweise auf veraltetes Verhalten. Ein aktueller Befehl kann beendet werden, ohne eine Erfolgsmeldung auszugeben. Überprüfen Sie daher echo $?unmittelbar danach den Exit-Status: Ein erfolgreicher Exit-Status 0bedeutet, dass der Befehl erfolgreich beendet wurde. Falls ein Fehler zurückgegeben wird, beheben Sie zuerst den Pfad, die PHP-CLI-Installation, die Berechtigungen, die Datenbankverbindung oder einen ownCloud-Fehler. Der Timer führt denselben fehlerhaften Befehl wiederholt aus, wenn Sie diese Überprüfung überspringen.

ownCloud in den Cron-Modus versetzen

Öffnen Sie in den Administratoreinstellungen von ownCloud den Bereich „Hintergrundprozesse“ oder „Cron“ und wählen Sie „Cron“ . Sie können den Scheduler auch aus dem Installationsverzeichnis heraus festlegen:

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

Dadurch wird der Cron-Modus aktiviert; der geplante Befehl bleibt bestehen occ system:cron. Laut ownCloud-Handbuch entspricht dieser Befehl der Auswahl von Cron auf der Administrationsseite. Cron ist für Server, die Aufträge zuverlässig verarbeiten müssen, vorzuziehen, da AJAX von Seitenaufrufen abhängt und Aufträge in ruhigen Phasen unter Umständen nicht ausgeführt werden. Für eine kleine, private Instanz mag AJAX einfacher sein, ist aber weniger zuverlässig.

Erstelle den systemd-Dienst und den Timer.

Erstellen Sie dies /etc/systemd/system/owncloudcron.servicemit Ihrem tatsächlichen HTTP-Konto und ownCloud-Pfad:

[Unit]
Description=ownCloud background jobs

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron

Type=oneshotWeisen Sie systemd an, den Befehl vollständig auszuführen und sich anschließend zu beenden. Die Angabe des vollständigen PHP-Pfads vermeidet Abhängigkeiten von den eingeschränkt PATHverfügbaren Systemdiensten. Das Arbeitsverzeichnis hilft ownCloud bei der Auflösung relativer Pfade. Stellen Sie sicher, dass das Dienstkonto mit dem Eigentümer der ownCloud-Dateien und dem Zugriff auf die Daten übereinstimmt. Führen Sie den Job nicht als Root aus.

Als Nächstes erstellen Sie Folgendes /etc/systemd/system/owncloudcron.timer:

[Unit]
Description=Run ownCloud background jobs every 15 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=owncloudcron.service

[Install]
WantedBy=timers.target

Das ownCloud-Handbuch empfiehlt für das Standardbeispiel von Cron einen 15-Minuten-Rhythmus und erkennt Systemd-Timer als alternativen Scheduler an. Dieser Timer startet fünf Minuten nach dem Systemstart und plant weitere Ausführungen 15 Minuten nach Aktivierung des Dienstes. Falls Ihre Arbeitslast ein anderes Intervall erfordert, passen Sie dieses OnUnitActiveSecbewusst an und berücksichtigen Sie die Dauer der einzelnen Ausführungen. Vermeiden Sie es, für denselben Befehl einen weiteren Crontab-Eintrag zu konfigurieren; doppelte Scheduler können redundante Ausführungen starten und die Fehlersuche erschweren.

Weisen Sie systemd an, seine Unit-Definitionen neu zu laden, und aktivieren und starten Sie anschließend den Timer:

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

daemon-reloadDies ist nach dem Erstellen oder Bearbeiten von Unit-Dateien erforderlich. Durch Aktivieren des Timers wird dieser nach zukünftigen Neustarts automatisch gestartet; andernfalls --nowwird er in der aktuellen Sitzung gestartet. Aktivieren Sie die Timer-Unit, nicht nur den Dienst.

Finden Sie heraus, warum ein Lauf übersprungen wurde oder fehlgeschlagen ist.

Prüfen Sie, ob der Timer aktiviert ist und wann er das nächste Mal ausgeführt wird:

systemctl is-enabled owncloudcron.timer
systemctl list-timers --all owncloudcron.timer
systemctl status owncloudcron.timer

Ein aktivierter Timer sollte in der Timerliste mit der nächsten Aktivierung angezeigt werden. Falls dies nicht der Fall ist, überprüfen Sie den Unit-Dateinamen, laden Sie systemd neu und aktivieren Sie den Timer erneut. Falls der Timer einen Lauf anzeigt, ownCloud-Funktionen aber weiterhin verzögert funktionieren, überprüfen Sie den Dienst und seine Protokolle.

systemctl status owncloudcron.service
sudo journalctl -u owncloudcron.service --since today

Suchen Sie nach einem falschen Pfad, einem nicht zugänglichen Datenverzeichnis, einer fehlenden PHP-Erweiterung oder einem Datenbankfehler. Testen Sie den genauen Befehl in der Service-Datei manuell, um www-datadie Umgebung so genau wie möglich nachzubilden. Stellen Sie außerdem sicher, dass Sie den ownCloud-Befehl verwendet haben occ system:cronund nicht etwa ein Nextcloud-Beispiel kopiert haben, das diesen aufruft cron.php.

Überprüfen Sie, ob ownCloud Aufträge verarbeitet.

Prüfen Sie nach ein bis zwei Timerintervallen, ob der Dienst erfolgreich abgeschlossen wurde und der Timer eine spätere Aktivierung geplant hat. Überprüfen Sie anschließend den Status des Hintergrundprozesses auf der ownCloud-Administratorseite. Die angezeigte letzte Ausführungszeit sollte sich erhöhen und eine veraltete Cron-Warnung sollte verschwinden. Meldet systemd Erfolg, die Warnung bleibt aber bestehen, prüfen Sie das ownCloud-Anwendungsprotokoll und stellen Sie sicher, dass die Web-Oberfläche mit derselben Instanz und Datenbank verbunden ist, die auch die Befehlszeileninstallation verwendet.

Installieren Sie diese Host-Units für offizielle ownCloud-Container nur dann, wenn Sie den internen Scheduler des Containers absichtlich deaktiviert haben und die aktuelle ownCloud-Containerdokumentation Ihre Konfiguration unterstützt. Die hier beschriebene Konfiguration ist eine Lösung auf Hostebene für klassisches ownCloud unter systemd; Dienstnamen, Pfade, PHP-Versionen und das Containerverhalten hängen von der jeweiligen Bereitstellung ab.

Einen Kommentar hinterlassen

Führen Sie ownCloud-Hintergrundprozesse zuverlässig mit einem Systemd-Timer aus.

Ersetzen Sie die bedarfsgesteuerten Jobausführungen durch einen systemd-Timer, der alle 15 Minuten den von ownCloud unterstützten occ system:cron-Befehl ausführt.

ownCloud WebDAV-Synchronisierung wiederherstellen, indem die defekte Route gefunden wird

Verfolgen Sie die WebDAV-Anfrage über Apache, Nginx oder einen Reverse-Proxy und bestätigen Sie anschließend mit einem authentifizierten PROPFIND-Test, ob die ownCloud-Synchronisierung funktioniert.

Legen Sie die öffentliche URL von Nextcloud so fest, dass es sich selbst erreichen kann.

Beheben Sie die Warnung von Nextcloud bezüglich der fehlenden ausgehenden Adresse, indem Sie die kanonische URL festlegen und DNS, HTTPS und Reverse-Proxy-Routing direkt auf dem Server überprüfen.

Nextcloud Redis-Caching unter Ubuntu 24.04 einrichten

Nextcloud Redis-Caching unter Ubuntu 24.04 einrichten

Konfigurieren Sie APCu und Redis über einen lokalen Unix-Socket für Nextcloud-Caching und Dateisperrung, mit Schritten für aktuelle und ältere Nextcloud-Versionen.

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.