Wo befinden sich die Crontab-Dateien?

Wenn Cronjobs auf einem Linux-System angelegt werden sollen, so geschieht dies meist mit dem Befehl:

crontab -e

Damit wird die Crontab-Datei des aktuellen Nutzern in einem Editor geöffnet. Leider verschleiert der Befehl den Ort an dem die eigentlichen Crontab-Dateien liegen. Dies ist z.B. dann interessant wenn ein Backup der Cronjobs eingespielt werden soll. Die entsprechenden Crontab-Dateien befinden sich hierbei im Ordner:

/var/spool/cron/crontabs

Für jeden Nutzer existiert dort eine Datei mit dem entsprechenden Nutzernamen, in welchem die Cronjobs hinterlegt sind. Meistens wird ein solches Backup nach dem Befehl:

crontab -r

benötigt werden. Dieses Befehl löscht die Crontab-Datei des aktuellen Nutzers. Leider ist die E-Taste ein direkter Nachbar der R-Taste. Dies führt dazu das die Crontab-Datei beim Versuch sie zu bearbeiten, bedingt durch einen kleinen Vertipper, ohne Rückfrage gelöscht wird.

ownCloud cron.lock Probleme abmildern

ownCloud aktualisiert regelmäßig Daten im Hintergrund mittels eines Cronjobs. So werden z.B. neue Artikel aus RSS-Feeds bezogen, wenn die App News installiert ist. Während der Cronjob durchgeführt wird, legt ownCloud eine Datei mit dem Namen cron.lock im data-Verzeichnis der ownCloud Installation an. Unter Umständen kann es passieren das der Cronjob nicht zu einem ordentliche Abschluss kommt und die cron.lock-Datei damit bestehen bleibt. Dies führt dazu das ownCloud keine Aktualisierungen mehr vornehmen kann. Als Workaround kann die Sperrdatei mit einem Cronjob regelmäßig entfernt werden. Dazu muss die Crontab bearbeitet werden:

crontab -e

In die sich öffnende Crontab-Datei wird nun folgendes eingetragen:

4    0    * * *   rm /var/www/example/owncloud/data/cron.lock

Damit wird die cron.lock-Datei jeden Tag um 0:04 Uhr gelöscht, falls sie vorhanden sein sollte. Wichtig ist es dabei die Crontab-Datei mit einer Leerzeile abzuschließen und den Pfad an die eigene Installation anzupassen.

Crontabs im Browser erstellen

In der Crontab-Datei werden sich wiederholende Cronjobs gespeichert. Mittels:

crontab -e

ist es möglich diese Datei zu bearbeiten. Wer mit der Syntax nicht konform geht bzw. sie noch nicht verinnerlicht hat, kann sich die passenden Kommandozeilen für die Crontab-Datei mittels des Crontab Generator zusammenbauen.

crontab-generator.org

crontab-generator.org

Der unter crontab-generator.org zu findende Webdienst, bietet eine Funktionalität um sich einfach Konfigurationszeilen für die Crontab-Datei zusammenzubauen. Auf Wunsch kann sich die fertige Datei auch per Mail zugesandt oder in eine Datei exportiert werden.

Cronjob-Ausgabe in eine Datei umleiten

Manchmal möchte die Ausgabe eines Cronjobs in eine Datei umleiten. Dazu sollte man im ersten Schritt die Crontab-Datei mittels:

crontab -e

öffnen. Die entsprechende Datei sieht dabei in etwa so aus:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
00 14    * * *   /home/test/test.sh

Möchte man nun die Ausgabe umleiten, so geschieht das indem man den Cronjob wie folgt ändert:

00 14    * * *   /home/test/test.sh > /home/test/test.log 2>&1

Das 2>&1 am Ende sorgt dafür das nicht nur die Standardausgabe in der Datei landet, sondern auch die Ausgaben welche sonst in der Fehlerkonsole landen würde.