【问题标题】:Cronjob wont run my python installed script commandCronjob 不会运行我的 python 安装脚本命令
【发布时间】:2013-07-05 17:16:25
【问题描述】:

我正在运行一个命令,该命令作为我创建的 python 包的脚本安装。

我有一个 cronned_job_shell_script.sh 文件:

touch a.txt
my_script_command

my_scrip_command 使用 pip install my_py_package.tar.gz 安装的位置

cron 行是:

0 * * * * cronned_job_shell_script.sh

如果我从 shell 运行cronned_job_shell_script.sh,它工作正常,也可以运行 python 脚本。

即使先尝试 env -i /bin/bash --noprofile --norc 然后运行脚本也可以。

问题是,当被 cron 调度时,文件 a.txt 被触及,但脚本似乎没有运行。

【问题讨论】:

  • 你试过0 * * * * /bin/sh cronned_job_shell_script.sh吗?
  • my_script_command 在哪里?它是否可能在您的登录会话的 PATH 上,但不在您的默认 PATH(或 root 的默认路径,如果这是根 cron 而不是用户 cron)上?
  • 同时,仅放置绝对路径 /opt/mystuff/bin/my_script_command 或其他什么而不是依赖于 PATH 是否可以接受?
  • @fedorqui 试过了,还是不行
  • @abarnert 解决了,问题是 cron 以 root 用户身份运行它。把它写下来作为答案,我会接受它,这样你就可以得到积分:)

标签: python shell cron


【解决方案1】:

问题是您将它放在系统 crontab 中,这意味着它由 root 运行,并且 root 具有与您的用户不同的 PATH 变量。因此,在 shell 中测试它(作为你,而不是 root)实际上并没有测试同样的东西。

最简单的解决方案是只使用脚本的绝对路径——/opt/mystuff/bin/my_script_command 而不仅仅是my_script_command

【讨论】:

    最近更新 更多