【问题标题】:How to use the same environment as the one I am using in cron jobs?如何使用与我在 cron 作业中使用的环境相同的环境?
【发布时间】:2017-02-13 15:26:48
【问题描述】:

我已经阅读了很多关于 crontab 和 env 的线程,但我仍然无法正确设置。

我用过

env > env_setting

因为我需要使用相同的env设置和bash来运行,所以在crontab -e

*/1 * * * * env - `cat /path/to/env_setting` /bin/bash ; /bin/bash /path/to/program.sh

但它不起作用。如何使用与我在 cron 作业中使用的环境相同的环境?

P.S 我正在使用 Red Hat。

编辑: 我在program.sh中尝试了以下内容@

env >> temp.log 2>&1
env - `cat /path/to/env_setting`
env >> temp.log 2>&1

temp.log 中的 2 个env 输出完全相同。没有使用env_setting

【问题讨论】:

  • env cat - ... /bin/bash 是一个进程。 ; 表示“开始一个新进程”。总体上可能有一个更好的解决方案,但请尝试env - 'cat /path/to/env_settings' /bin/bash /path/to/prog.sh,其中' 字符确实是后退,或者您不能将“现代”cmd-sub 与$(.cmd-sub...) 一起使用?祝你好运。
  • 其实在发帖之前我已经尝试过你的方法,但是没有成功。
  • 所以你不能在./program.sh 的顶部添加一行:. /path/to/env(在脚本中获取文件?)。祝你好运。
  • 试过了。我在上面添加了详细信息。不工作。
  • 我的意思是每个环境一次,与任何脚本分开,当你拥有你想要的环境时,在命令行上运行set > env.file;然后在所有脚本的顶部添加. /path/to/env.file。我看不出你对 `env >> temp.log 2>&1' 等有什么期望。但这不会是我第一次错过某件事的重点 ;-) ...得走了。可能要到明天才能回来。祝你好运。

标签: linux bash unix cron redhat


【解决方案1】:

cron 有许多怪癖和问题,它对环境变量的处理是一个值得注意的问题。您可以尝试通过重新导入您的环境来解决此问题,但如果可能,更好的选择是完全避免 cron。对于许多用例,at command 工作得更好,并且在您的 环境中运行其他功能,而不是cron 的精简版。

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2021-01-02
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多