Fehler beim Cronjob mit / usr / bin / env

884
Dr. Watson

Ich habe ein Skript, das perfekt funktioniert, wenn ich es manuell von der Befehlszeile aus ausführe. Wenn es jedoch über cron ausgeführt wird, schlägt der Job mit dem folgenden Fehler fehl:

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

Die erste Zeile im Skript lautet:

#!/usr/bin/env escript 

Das einzige, was ich feststellen kann, ist, dass Escript nicht gefunden wird, und zwar 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. Soll er auch die PATH-Variable nicht vom Benutzer erben? Muss alles als absolute Pfade angegeben werden?

1

2 Antworten auf die Frage

1
Dennis Williamson

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

0
Mark

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

Ypu kann Umgebungsvariablen in der Crontab-Zeile festlegen

Siehe man crontab für Details, zB man crontab