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 PATH
in der Crontab setzen.
Fehler beim Cronjob mit / usr / bin / env
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?
2 Antworten auf die Frage
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
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
9
X-Schritte in X-Sitzungen "trennen" und "neu anhängen"?
-
1
Windows-Datumsrepräsentation
-
9
grep alle .java-Dateien in einem Verzeichnis für eine bestimmte Zeichenfolge
-
1
Ist kill -STOP ein temporärer Befehl?
-
2
Anzahl der Zeilen und Spalten in VT420 ändern?
-
3
Mac OS X: herkömmliche Orte, an denen Binärdateien gespeichert werden sollen
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?