Cron ignoriert Umgebungsvariablen?

Cron ignoriert Umgebungsvariablen?

Das sollte eigentlich ganz einfach sein, aber es scheint nicht zu funktionieren. Ich habe ein sehr einfaches Skript, das von cron ausgeführt wird:

export [email protected]
[email protected]
echo "MAILTO is set to $MAILTO"

Cron scheint die Variable MAILTO allerdings nicht zu berücksichtigen - die Cron-E-Mails sehen teilweise so aus:

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/deploy>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=deploy>
Date: Thu, 20 Sep 2012 13:05:01 -0700

MAILTO is set to [email protected]

Was übersehe ich? Warum übernimmt cron die im Skript festgelegten Umgebungsvariablen nicht?

Antwort1

Ein Prozess in Unix kann seine eigenen Umgebungsvariablen ändern und die Umgebungsvariablen seiner untergeordneten Prozesse definieren, wenn diese erstellt werden. Ein Prozess kann weder die Umgebungsvariablen seines übergeordneten Prozesses noch die seiner untergeordneten Prozesse ändern, nachdem diese erstellt wurden, noch die Umgebungsvariablen eines anderen Prozesses.

Es scheint, als würden Sie versuchen, die Umgebungsvariablen von Cron durch einen Cron-Job zu ändern, was unmöglich ist.

Antwort2

Ich vermute, Sie sind nicht als derselbe Benutzer angemeldet, unter dem der Cron ausgeführt wird. Daher kommt die Diskrepanz.

Antwort3

Legen Sie MAILTOdie Umgebungsvariable in der crontabDatei fest. cronIgnorieren Sie Umgebungsvariablen aus Sicherheitsgründen einfach. Wenn MAILTOnicht angegeben, wird die Ausgabe an den Eigentümer des Prozesses gesendet, der die Ausgabe erzeugt hat.

verwandte Informationen