【发布时间】:2013-10-24 19:22:46
【问题描述】:
我对使用 puppet cron 类型的 environment attribute 感到困惑。设置 PATH 似乎是一个奇怪的地方,因为如果我有多个要设置的 cron 作业,它们似乎会发生冲突。除了每个 cron 作业的特定任务之外,它不应该设置在一个对用户的所有 cron 作业都是全局的位置吗?
【问题讨论】:
我对使用 puppet cron 类型的 environment attribute 感到困惑。设置 PATH 似乎是一个奇怪的地方,因为如果我有多个要设置的 cron 作业,它们似乎会发生冲突。除了每个 cron 作业的特定任务之外,它不应该设置在一个对用户的所有 cron 作业都是全局的位置吗?
【问题讨论】:
Ben,在我看来,这对于 cron 作业非常有意义。考虑这个,作为一个例子:有一个名为 Composer 的工具用于 PHP 中的依赖项管理,并说我想通过 cron 安排对我的依赖项的自动更新。如果有许多依赖项和/或更新它们的时间太长,则该工具将超时,这就是它接受 COMPOSER_PROCESS_TIMEOUT 环境变量的原因。因此通过设置
environment => 'COMPOSER_PROCESS_TIMEOUT=2000',
我会有效地更改这种特殊情况的超时时间而不涉及其他任何内容。
希望它是有意义的,并澄清了一点。
【讨论】:
我不相信环境变量会相互冲突。 cron 资源似乎在命令执行时设置了变量。所以它不应该在其他 cron 作业期间说设置。
例如。
# Puppet Name: pe-mcollective-metadata
0,15,30,45 * * * * /opt/puppet/sbin/refresh-mcollective-metadata
# Puppet Name: report_baseline
0 20 * * * PATH=/opt/puppet/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin /opt/puppet/bin/puppet inspect 1> /dev/null
因此您可以在此处看到 refresh-mcollective-metadata 作业在运行时没有设置 PATH 变量,但 report_baseline 作业有。
【讨论】: