Cron-Umgebungsvariablen

Cron-Umgebungsvariablen

Ich führe ein einfaches Shellskript aus, das in einer Login-Shell von einwandfrei läuft cron, wo es aber nicht ausgeführt wird. Aus irgendeinem Grund /usr/local/binbefindet es sich nicht im Benutzerpfad, wenn es von ausgeführt wird, cronwährend es sich bei der Ausführung in einer Shell befindet.

Wo ist denn das Umfeld dafür cronzu bestimmen?

Antwort1

Im Allgemeinen aus der für eingerichteten Umgebung ohne Anmeldung /bin/sh. Dies ist die Standardumgebung zum Ausführen des Befehls.

Sie können in den meisten Versionen zusätzliche Umgebungsvariablen in Ihrer Crontab festlegen, beispielsweise:

PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever

crontab(5)Weitere Einzelheiten finden Sie hier.man 5 crontab

Antwort2

Überprüfen Sie, welche Shell Ihr Skript verwendet.

Die Shell und Variablen für crontab sind in /etc/crontab angegeben.

x@x:~$ cat /etc/crontab 

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Die von sh verwendete Profildatei befindet sich im Benutzer-Home.

x@x:~$ ls ~/.profile 
/home/x/.profile

Sie können am Ende dieser Datei die PATH-Variable hinzufügen. (Stellen Sie sicher, dass Sie die Profildatei des richtigen Benutzers hinzufügen.)

PATH="$PATH:/usr/local/bin"

oder Sie können dieselbe Zeile in Ihr eigenes Skript einfügen.

verwandte Informationen