В течение долгого времени я привык думать, что любая среда, которую я хотел в кроне, я в основном, должна была установить в самом crontab - посмотрите "Другую Среду", вероятный главный ответ здесь: Причины, почему crontab не работает
но... на моей недавней установке Ubuntu 14.04, у меня есть crontab, который похож на это:
*/1 * * * * env > /tmp/cron.env
/etc/environment файл, который похож на это:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
RACK_ENV=production
LC_ALL=en_US.UTF-8
FROM_ETC_ENVIRONMENT=testing
и вывод cron.env файл похож на это:
FROM_ETC_ENVIRONMENT=testing
HOME=/home/devops
LOGNAME=devops
RACK_ENV=production
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
LC_ALL=en_US.UTF-8
PWD=/home/devops
FROM_ETC_ENVIRONMENT является переменной, которую я создал с тем уникальным именем, чтобы гарантировать, что это ниоткуда еще не могло возможно прибывать.
Я навел справки о документации относительно того, когда это, возможно, изменилось / и т.д... Я предполагаю, что мой вопрос - действительно это:
Действительно ли это - поведение, на которое я могу полагаться от продвижения Ubuntu 14.04? (Кто-либо знает, когда это было представлено? Или это всегда был этот путь, и я просто не понял это - главный ответ в Причинах, почему crontab не работает, в ссылке говорится, что крон не читает из/etc/environment вообще, но это, кажется, неправильно основано на моих тестах.
Тот ответ устарел (по крайней мере, тот раздел, который является от 2011 ). Если Вы осматриваете /etc/pam.d/cron
:
$ grep pam_env /etc/pam.d/cron
# Read environment variables from pam_env's default files, /etc/environment
# and /etc/security/pam_env.conf.
session required pam_env.so
session required pam_env.so envfile=/etc/default/locale
pam_env
модуль PAM, который загружается /etc/environment
, и как Вы видите, он используется cron
, по крайней мере, с 14,04. И я проверил 12,04 систем, и они также имели pam_env
загруженный для cron
.