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 MAILTO
die Umgebungsvariable in der crontab
Datei fest. cron
Ignorieren Sie Umgebungsvariablen aus Sicherheitsgründen einfach. Wenn MAILTO
nicht angegeben, wird die Ausgabe an den Eigentümer des Prozesses gesendet, der die Ausgabe erzeugt hat.