【问题标题】:Python script inside docker creates empty file with CRONdocker 内的 Python 脚本使用 CRON 创建空文件
【发布时间】:2017-10-27 04:39:58
【问题描述】:

我有一个这样的 CRON 作业集:

0 0 * * * cd /home/path/to/script && sudo -u myuser ./thescript.sh

此脚本构建一个 docker 镜像,运行一个简单的 python 应用程序,将测试验证报告转储到文件中。当我在终端中运行此脚本时,一切正常(生成的文件位于 /home/myuser 中)。不幸的是,当我运行 CRON 作业时,该文件已创建,但为空。它必须与拥有 CRON 作业的 Root 有关,但我不知道如何完成它

有什么线索吗?

【问题讨论】:

  • 如果您使用sudo crontab -e,root 将拥有 cron 并使用这些权限执行它。 -- 那就是说root 应该能够写入任何东西,即使在主目录中也是如此。这似乎是 .sh 文件的问题...您可以发布创建文件但其中没有任何内容的违规代码吗?
  • 会不会有路径或环境问题?即link你有无密码的sudo吗?
  • @boethius,你是对的,经过调查,这与 python 脚本无法识别我的环境变量以及脚本失败有关。关于如何通过 Cron 共享这些变量的任何线索?
  • 早上 - 您可以尝试将 bash 设置复制到 cron 文件中,在您计划的作业之上(但随着时间的推移可能会不同步)

标签: python linux docker cron


【解决方案1】:

sudo 需要 TTY,而 cron 不会使用 TTY 运行命令。您需要为 root 用户运行 cron

这可以使用

sudo crontab -e 

那么在 cron 中不要使用 sudo

0 0 * * * cd /home/path/to/script && ./thescript.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多