Die crontab und ownCloud / nextCloud

Einbindung der cron.php

Damit ownCloud oder auch nextCloud richtig ausgeführt wird, muss ein Cronjob durchgeführt werden. Standardmäßig führt ownCloud per AJAX die ownCloud-eigene cron.php pro Seite aus. Im Administrator-Menu hat man aber die Möglichkeit, den Aufruf der Datei an einen lokalen Cronjob zu übergeben und das führt zu einer Entlastung der Weboberfläche. Ajax und Webcron funktionieren zudem nicht richtig und können dazu führen, dass die cron.php unberechenbar ausgeführt wird. Die Ausführungen hier beziehen sich auf DSM 5.2. Wichtig ist, dass der Cron NICHT über den „Cronjob Editor“ eingegeben wird. Dieser hat mit dem komplexen Cron Probleme und kann diesen nicht verarbeiten. Deshalb muss über SSH (Benutzer: root) die Datei etc/crontab mit dem vi Editor (vi /etc/crontab) bearbeitet werden. Folgende Zeile muss eingegeben werden:

*/15 * * * * root /bin/su -s /bin/sh -c „/usr/bin/php -f /volume1/web/owncloud/cron.php“ http

Dadurch wird die genannte Datei im Abstand von 15 Minuten ausgeführt. Der Hauptgrund für den speziellen Cron ist, dass dieser mit dem root-Benutzer ausgeführt werden muss, um damit den http-Benutzer aufzurufen.

Resetten der crontab

Nach jeder Änderung in der crontab muss diese über die Konsole mit dem folgenden Befehl neu gestartet werden:

usr/syno/sbin/synoservicectl –restart crond

Beispieleinträge in der crontab

/bin/su -s /bin/sh -c „/usr/bin/php -f /volume1/web/owncloud/cron.php“ http

/bin/su -s /bin/sh -c „/usr/bin/php -f /volume1/web/owncloud/occ files:scan –all“ http

Ansprechen von php mit DSM 5.2 und DSM 6

  • DSM 5.x : /usr/bin/php
  • DSM 6.x : /usr/local/bin/php56 (mit dem php Zusatz-SPK)
  • DSM 6.x : /bin/php (ohne dem php Zusatz-SPK)

Verwendung von External Storage

Bei der Verwendung von gemeinsamen Ordnern über die Funktion „External Storage“ muss in den PHP-Einstellungen der DS die Zeile „open_basedir“ geleert werden, da ansonsten diese Verzeichnisse auf der Oberfläche nicht angezeigt werden und somit nicht eingebunden werden können. Damit aber gerade dort immer die korrekten Daten angezeigt werden, soll im normalen Fall stets mit der GUI von ownCloud oder nextCloud gearbeitet werden, oder am Computer dann über den Client. Das ist aber nicht immer machbar, zudem in der Regel jeder wie gewohnt weiterarbeiten möchte und somit ist schnell wieder der Explorer oder dergleichen im Einsatz. Das führt aber dazu, daß die Angaben im Explorer nicht immer mit dem korrespondieren, was in der GUI angezeigt wird. Von daher sind Filescans erforderlich, die diesen Umstand beheben. Während alleine dafür der Eintrag

‚filesystem_check_changes‘ => 1,

in der config.php ausreicht, ist es mit der Einbindung von gemeinsamen Ordnern über das Plug-In „External Storage“ etwas aufwendiger. Um die Daten aktuell vorhalten zu können sind Einträge in der crontab erforderlich:

10    15    *    *    *    root    /bin/su -s /bin/sh -c „/usr/bin/php -f /volume1/web/owncloud/occ files:scan –all“ http

Damit werden alle Dateien und Verzeichnisse gescannt. Soll wegen Dauer und Auslastung weniger gescannt werden, ist es ratsam, einen Benutzer anzulegen, der bei den entsprechenden Verzeichnissen als Berechtigter hinterlegt wird. Dann werden nur diese gescant, hier anhand des Benutzers „rescan“ dann so:

0,30    7-23    *    *    *    root    /bin/su -s /bin/sh -c „/usr/bin/php -f /volume1/web/owncloud/occ files:scan rescan“ http

Soll der Vorgang dann noch gelogt werden, kommt hinter diesem Eintrag noch

>> /volume1/Sicherungen/Protokolle/ownCloud_rescan_rescan__$(/bin/date +\%Y-\%m-\%d).log 2>&1

About the author: Andreas Kaelber

2 comments to “Die crontab und ownCloud / nextCloud”

You can leave a reply or Trackback this post.

  1. M. - 2. Oktober 2017 at 15:04 Reply

    (fixed) Reset der Crontab:

    /usr/syno/sbin/synoservicectl –restart crond

Leave a Reply

Your email address will not be published.