Kem*_*son 3 cron environment-variables 14.04
很长一段时间以来,我已经习惯于认为我想要在 cron 中的任何环境,我基本上都需要在 crontab 本身中进行设置 - 请参阅“不同的环境”,这里可能是最佳答案: Reasons why crontab does not work
但是...在我最近的 Ubuntu 14.04 安装中,我有一个看起来像这样的 crontab:
*/1 * * * * env > /tmp/cron.env
Run Code Online (Sandbox Code Playgroud)
一个看起来像这样的 /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
Run Code Online (Sandbox Code Playgroud)
输出 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
Run Code Online (Sandbox Code Playgroud)
FROM_ETC_ENVIRONMENT 是我使用该唯一名称创建的变量,以确保它不可能来自其他任何地方。
我已经四处寻找有关何时可能发生变化的文档/等等......我想我的问题真的是这样的:
这是我可以从 Ubuntu 14.04 中依赖的行为吗?(有人知道它是什么时候引入的吗?或者它一直都是这样,我只是没有意识到这一点 - crontab 不起作用的原因链接中的最佳答案说 cron 不从 /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
Run Code Online (Sandbox Code Playgroud)
pam_env
是加载 的 PAM 模块,/etc/environment
正如您所看到的,cron
至少从 14.04 开始,它被 使用。我检查了一个 12.04 系统,它也pam_env
加载了cron
.
归档时间: |
|
查看次数: |
2957 次 |
最近记录: |