
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/bin
befindet es sich nicht im Benutzerpfad, wenn es von ausgeführt wird, cron
während es sich bei der Ausführung in einer Shell befindet.
Wo ist denn das Umfeld dafür cron
zu 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.