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?

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 .


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.