Cronjob mit / usr / bin / env fehlschlagen

1

Ich habe ein Skript, das einwandfrei funktioniert, wenn ich es manuell über die Befehlszeile ausführe. Wenn der Job jedoch über cron ausgeführt wird, schlägt er mit folgendem Fehler fehl:

/ usr / bin / env: escript: Keine solche Datei oder kein solches Verzeichnis

Die erste Zeile im Skript lautet:

#!/usr/bin/env escript

Das Einzige, was ich herausfinden kann, ist, dass kein Escript gefunden wird, und das, weil es nicht in / usr / bin installiert ist, sondern in einem Unterverzeichnis des Home-Verzeichnisses des Benutzers.

Mein Verständnis - vielleicht ein Missverständnis - von cron ist, dass cron jeden Job in der crontab eines Benutzers unter der UID / GID des Benutzers ausführt. Sollte es nicht auch die PATH-Variable vom Benutzer erben? Muss alles als absoluter Pfad angegeben werden?

Dr. Watson
quelle

Antworten:

1

Cron läuft unter der UID des Benutzers, aber mit einem Minimum PATH. Ihr Skript muss einen vollständigen Pfad zum Interpreter (escript) verwenden, oder Sie müssen das PATHin der crontab festlegen .

Dennis Williamson
quelle
0

cron erbt den PFAD nicht vom interaktiven Setup des Benutzers. PATH ist auf "/ usr / bin: / bin" gesetzt

Ypu kann Umgebungsvariablen in der Crontab-Zeile setzen

Siehe man crontab für Details, zB man crontab

Kennzeichen
quelle