Symlink in Crontab, Skript nicht gefunden

Symlink in Crontab, Skript nicht gefunden

Ich führe Debian-Tests durch und kann keinen einfachen Cron dazu bringen, ein symbolisch verknüpftes PHP-Skript auszuführen.

Ich habe ein PHP-Skript in einem Unterverzeichnis in meinem Home-Ordner /home/foobar/dir/script.php(das mit dem folgenden Shebang beginnt #!/usr/bin/env php).

Ich habe einen symbolischen Link erstellt, der darauf verweist:

sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*

Und habe meiner Crontab die folgende Regel hinzugefügt ( whateverjede Minute ausführen):

crontab -e
* * * * * whatever

Aberes funktioniert nicht, erhalte ich die folgende Fehlermeldung:

cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found

WährendDas Zeigen auf das Skript ohne Verwendung des Symlinks funktioniert:

crontab -e
* * * * * /home/foobar/dir/script.php

Irgendeine Idee?

Antwort1

Verzeichnisse wie /usr/local/binund /usr/local/sbinsind standardmäßig nicht in Cronjobs enthalten $PATH. Sie können sie jedoch $PATHin Crontab neu definieren, indem Sie einfach so etwas wie dies vor alle definierten Cronjobs setzen

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Antwort2

Die Umgebungsvariable $PATH unter cron ist begrenzt und enthält weder /usr/local/bin noch /home/foobar/dir. Die richtige Antwort ist, wie Sie festgestellt haben, den Pfad zum Skript in Ihrer Crontab vollständig zu qualifizieren. Dies führt zu weniger Überraschungen.

verwandte Informationen