Cron ist eigen
Cronjobs laufen in einer sehr reduzierten Umgebung — ohne deine gewohnten Pfade und Variablen. Ein Skript, das in deiner Shell funktioniert, kann unter Cron deshalb stillschweigend scheitern. Die Ursachen sind aber überschaubar.
1. Absolute Pfade verwenden
Cron kennt deine PATH-Variable nicht. Schreibe Befehle und Dateien mit vollem Pfad:
/usr/bin/php /var/www/skript.php
statt nur php skript.php. Den vollen Pfad eines Programms findest du mit which php.
2. Ausgabe protokollieren
Standardmäßig verschluckt Cron die Ausgabe — du siehst Fehler nicht. Leite sie in eine Datei um:
* * * * * /usr/bin/php /var/www/skript.php >> /var/log/meinjob.log 2>&1
Das Log zeigt dir sofort, woran es scheitert.
3. Ausführungsrechte
Ein Shell-Skript braucht das Ausführungsrecht:
chmod +x /pfad/zum/skript.sh
Und idealerweise eine Shebang-Zeile wie #!/bin/bash in der ersten Zeile.
4. Richtiger Benutzer
Ein Job in der Crontab von root läuft als root, einer in deiner als dein Benutzer. Liegt es an Rechten auf Dateien, prüfe, in welcher Crontab der Job steht. Anzeigen mit crontab -l.
5. Syntax der Zeitangabe
Die fünf Felder sind Minute, Stunde, Tag, Monat, Wochentag. Ein */5 in der ersten Spalte heißt „alle 5 Minuten". Bei Unsicherheit hilft ein Crontab-Validator, bevor du dich auf eine Zeit verlässt.
Fazit
Absolute Pfade und ein Log lösen die meisten Cron-Probleme sofort. Die saubere Einrichtung erklärt der Artikel Cronjobs unter Linux. Eigene Cronjobs richtest du frei auf einem Nytrix vServer ein.