Cron fremdes Verhalten

443
FabioEnne

Ich habe ein Bash-Skript mit der Berechtigung, ausgeführt zu werden. Ich füge es einem cron-Job hinzu. Dieses Skript bringt im Grunde nur einen bestimmten Prozess zum Tode und Neustart. Das seltsame Verhalten ist, dass das Skript über das Terminal ausgeführt wird Wie erwartet, wird der Prozess heruntergefahren und neu gestartet, aber wenn der Cron-Job ausgelöst wird, wird nur der Prozess heruntergefahren, und nichts mehr ... eine Idee, warum dieses Verhalten auftritt? Vielen Dank

0
Wenn Sie keine Details veröffentlichen (Cron-Definition, Skriptinhalt ...), ist es schwer zu sagen. nKn vor 8 Jahren 0

1 Antwort auf die Frage

4
jcbermu

Beachten Sie, dass ein Skript, das in cron ausgeführt wird, nicht dieselbe Umgebung hat wie ein Skript, das in Shell ausgeführt wird .

Der Cron-Daemon startet eine Subshell aus Ihrem HOME-Verzeichnis.

Der Cron-Daemon stellt für jede Shell eine Standardumgebung bereit, die HOME, LOGNAME, SHELL (= / usr / bin / sh) und PATH (= / usr / bin) definiert.

Verlassen Sie sich nicht auf Umgebungsvariablen. Dazu gehören Pfadeinstellungen, X11-Einstellungen oder andere Optionen.

Verwenden Sie den vollständigen Pfad, zum Beispiel:

Anstatt Java oder Python sympathisch aufzurufen, müssen Sie / usr / bin / java oder / usr / bin / python verwenden .

Oder geben Sie einfach einen guten Wert für "PATH" als Teil Ihrer cron-Spezifikation an ... Chris Down vor 8 Jahren 0