Nextcloud – Nach Upgrade auf 21.0.3.1 funktionieren die Cron Jobs und die occ-Befehle nicht mehr

Photo by Markus Winkler on Unsplash

Nach dem Upgrade meiner Nextcloud von Version 21.0.2.1 auf die aktuellste Version 21.0.3.1 tauchte bei mir in der Übersicht unter Sicherheits- & Einrichtungswarnungen" die Meldung auf, dass die Cron Jobs nicht mehr funktionieren.

Der Fehler mit dem Cron Jobs kommt daher, dass es nicht mehr möglich ist occ-Befehle auszuführen. Wenn versucht wird den Wartungsmodus zu aktivieren, dann erscheint auch eine Fehlermeldung

Nextcloud – Backups in regelmäßigen automatisch Abständen löschen

In meinem Beitrag ➡ „Nextcloud auf dem Raspberry Pi“ beschreibe ich, wie man Nextcloud auf einem Pi installiert, samt automatischem Backup.

Bei mir liegt das Backup auf einem USB-Stick, der an den Pi angeschlossen ist. Damit ich nicht manuell den freien Speicherplatz auf dem externen Datenträger prüfen muss, damit dieser nicht vollläuft, habe ich mich ein kleines Shell-Skript zur automatischen Löschung der Backup-Dateien zu erstellt.

sudo nano /etc/scripts/autodelete.sh

#!/bin/bash

find /mnt/nextcloud/* -mtime +90 -exec rm {} \;

Anschließend die Zugriffsrechte für die Datei anpassen und das Ganze noch ausführbar machen:

sudo chown root:root
sudo chmod 0600
sudo chmod +x autodelete.sh

Zum Abschluss noch einen Eintrag in der crontab erstellen, damit das Skript bei jedem Neustart des Pi ausgeführt wird.

@reboot /bin/bash /etc/scripts/autodelete.sh

Etwas ausführlicher habe ich das Ganze bereits in einem anderen Beitrag beschrieben
Dateien automatisch mit Cron-Jobs löschen, die älter als X-Tage sind.


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Crontab-Meldungen per E-Mail versenden

Auf meinem kleinen Raspberry Pi habe ich einige Crontabs eingerichtet, die unterschiedliche Skripte automatisiert starten. Bei ein paar dieser Skripte wollte ich eine kurze Nachricht über den Erfolg per E-Mail erhalten.

In einem früheren Beitrag habe ich bereits ausführlich erklärt, wie man den Mail-Server Postfix installiert und konfiguriert ➡ Motion mit E-Mail-Versand. Der funktionierende Postfix soll auch die Grundlage für das Versenden von Crontab-Nachrichten sein.

Eigentlich ist es dann ganz einfach, einfach die crontab-Datei öffnen und ein paar Einträge vornehmen.

crontab -e

In diesem Beispiel soll der Pi eine Nachricht senden, wenn das Skript autodelete.sh erfolgreich gestartet wurde. ( ➡ Dateien automatisch mit Cron-Jobs löschen, die älter als X-Tage sind)

@daily /bin/bash /home/pi/scripte/autodelete.sh | mail -s "Dateien wurden gelöscht" 

Damit E-Mails versendet werden, ist einfach an den Cron-Befehl der Befehl über den E-Mail-Versand anzuhängen. ist gegen die Empfänger-E-Mail-Adresse auszutauschen.

Möchte man nicht Postfix installieren und konfigurieren nur um kleine Nachrichten per E-Mail zu versenden, kann man auch au ssmtp zurückgreifen. Eine Anleitung findet man hier ➡ http://linuxundich.de/gnu-linux/system-mails-ohne-einen-mail-server-mit-ssmtp-verschicken/

Dateien automatisch mit Cron-Jobs löschen, die älter als X-Tage sind

Meine kleine RPi-Überwachungskamera funktioniert auch im Dauerbetrieb sehr gut. Der einzige kleine Nachteil, es fällt eine große Menge an Daten durch das automatische Aufzeichnen an. Damit der Speicher des Pi nicht komplett voll läuft und eine manuelles Löschen alter Dateien unnötig wird, gibt es Abhilfe.

Mit einem einfachen Cron-Job werden die Dateien in definierten Verzeichnissen automatisch gelöscht, die älter X Tage sind.

In der Anleitung ➡ Raspberry Pi Kamera-Modul mit Motion als kleine Überwachungskamera werden einige neue Verzeichnisse angelegt. Die aufgenommenen Bilder/Videos werden von Motion in den Pfad /home/pi/motion/video gespeichert.
Die Bild- und Video-Dateien in diesem Motion-Verzeichnis sind schreibgeschützt, weshalb der Cron-Job als sudo auszuführen ist.

Schritt 1: Bash-Skript erstellen

Bevor wir aber den Cron-Job anlegen können, ist der Befehl für das Löschen der Dateien als Bash-Script zu erstellen. Ich habe zu diesem Zweck ein neues Verzeichnis angelegt, in das alle Skripte gelegt werden können.

mkdir /home/pi/script

Anschließend ist dort eine Datei einem Editor zu erstellen, die den folgenden Inhalt hat. Ich verwende hierfür nano. Zum Aufrufen des Editors und zum erstellen der Datei gebt einfach den Befehl nano auf der Konsole ein.
Kopiert den folgenden Inhalt in die neue Datei, passt den Pfad an und speichert die Datei unter einem beliebigen Namen ab. Bei mir hat das Skript die aussagekräftige Bezeichnung autodelete.sh erhalten.

#!/bin/bash

find /path/to/files/* -mtime +X -exec rm {} \;

Die Variable X steht für Tage und kann beliebig angepasst werden.

Inhalt bash-Skript
Inhalt bash-Skript

Das Skript könnt ihr auch sofort testen, indem ihr es über die Konsole starten könnt

cd /home/pi/script
sh ./autodelete.sh

Funktioniert das Skript, können wir im nächsten Schritt den Cron-Job anlegen.

Schritt 2: Cron-Job anlegen

sudo crontab -e

Der Eintrag zum automatischen Starten des Skript lautet bei mir:

@daily /bin/bash/ /home/pi/script/autodelete.sh

crontab
crontab

Cron-Job – Infos

Hier vielleicht noch ein paar Infos, die euch beim erstellen von Cron-Jobs helfen.

Die Zeiteinstellungen für den Cron-Job können nach dem folgenden Muster erfolgen.

*     *     *     *     *  YOURCOMMAND
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Day in Week (0 to 7) (Sunday is 0 and 7)
|     |     |     +------- Month (1 to 12)
|     |     +--------- Day in Month (1 to 31)
|     +----------- Hour (0 to 23)
+------------- Minute (0 to 59)

Ist euch das Einstellen der Zeit, wie oben beschrieben zu umständlich, gibt es auch ein paar Shortcuts:

@reboot --> only once at startup
@daily ---> once a day
@midnight --> once a day at midnight
@hourly --> once a hour
@weekly --> once a week
@monthly --> once a month
@annually --> once a year
@yearly --> once a year

Diese Shortcuts lassen sich auch wiederum in die normale Zeitangabe übersetzen:

@daily --> 0 0 * * *
@midnight --> 0 0 * * *
@hourly --> 0 * * * *
@weekly --> 0 0 * * 0
@monthly --> 0 0 1 * *
@annually --> 0 0 1 1 *
@yearly --> 0 0 1 1 *