Это должно быть просто, но, похоже, не работает. У меня есть очень простой скрипт, запускаемый cron:
export [email protected]
[email protected]
echo "MAILTO is set to $MAILTO"
Однако Cron, похоже, не обрабатывает переменную MAILTO — письма cron выглядят, в частности, так:
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]
Что я упускаю? Почему cron не подхватывает переменные среды, заданные в скрипте?
решение1
Процесс в Unix может изменять собственные переменные среды и определять переменные среды своих дочерних процессов при их создании. Процесс не может изменять переменные среды своего родителя, переменные среды своих дочерних процессов после их создания или переменные среды любого другого процесса.
Похоже, вы пытаетесь заставить задание cron изменить переменные среды cron, что невозможно.
решение2
Я предполагаю, что вы вошли в систему не под тем пользователем, под которым запущен cron. Отсюда и возникает несоответствие.
решение3
Установите MAILTO
переменную окружения в crontab
файле. cron
Просто игнорируйте переменные окружения по соображениям безопасности. Если MAILTO
не указано, то вывод будет отправлен владельцу процесса, который создал вывод.