Por que as variáveis configuradas no meu / etc / environment aparecem no meu ambiente cron?

3

Durante muito tempo, acostumei-me a pensar que qualquer ambiente que eu quisesse no cron, eu basicamente precisava configurar no próprio crontab - veja o "Different Environment", provavelmente a melhor resposta aqui: Razões pelas quais o crontab não funciona

mas ... na minha recente instalação do Ubuntu 14.04, eu tenho um crontab que se parece com isto:

*/1 * * * * env > /tmp/cron.env

um arquivo / etc / environment que se parece com isto:

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

e o arquivo de saída cron.env se parece com isto:

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

o FROM_ETC_ENVIRONMENT é uma variável que criei com esse nome exclusivo para garantir que não poderia vir de nenhum outro lugar.

Eu procurei por documentação sobre quando isso pode ter mudado / etc ... Eu acho que minha pergunta é realmente esta:

Este é um comportamento em que eu posso confiar no Ubuntu 14.04 daqui para frente? (Alguém sabe quando foi introduzido? Ou sempre foi assim, e eu simplesmente não percebi isso - a melhor resposta no razões pelas quais o crontab não funciona link diz que o cron não lê de / etc / environment, mas isso parece estar errado baseado em meus testes.

    
por Kem Mason 19.11.2015 / 19:06

1 resposta

5

Essa resposta está desatualizada (pelo menos, essa seção é de 2011 ). Se você inspecionar /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 é o módulo PAM que carrega /etc/environment e, como você pode ver, é usado por cron , pelo menos a partir de 14.04. E eu verifiquei um sistema 12.04, e ele também tinha pam_env carregado para cron .

    
por muru 19.11.2015 / 20:02