【问题标题】:Cron Job Python ScriptCron 作业 Python 脚本
【发布时间】:2018-02-12 10:12:10
【问题描述】:

在昨天之前,我没有使用过 linux 或 python 的经验。我是一名 Visual C# 开发人员,因此请在回复时牢记这一点。

我在 linux(ubuntu 服务器)中设置了一个 CRON 作业,它执行一个调用 python 脚本的 shell 脚本。 python 脚本在终端中运行良好。 cron 作业正在调用 shell 脚本(我有输出)。

在 google 上花了大约 10 个小时试图弄清楚为什么它似乎没有调用 python 脚本后,我决定查看 import 语句。有4个,其中一个不是python库而是第三方python库。无论出于何种原因,当我运行程序时,它在导入语句中获取库都没有问题。但是,当 cron 作业调用导入时,它一定无法找到它。

我的批处理脚本如下所示:

#!/bin/sh
PATH=/usr/local/bin
echo "start"
/usr/bin/python /usr/local/bin/checkit.py

checkit.py 和 import.py 都在 /usr/local/bin 中。两者都是 chmod 775。我还需要做什么才能让 cron 看到它?该程序在我调用它时运行良好,我编写的另一个不使用任何第三方的脚本在 cron 作业中运行良好。我唯一能想到的是python在执行程序时找不到导入.py文件

对不起,如果我没有说清楚,这对我来说是全新的。

【问题讨论】:

  • python 代码本身可能是相关的。 . script.bsh 有效吗?
  • 抱歉,script.bsh 是什么?
  • 无论你的 bash 脚本被命名为什么
  • bash 脚本运行,我在日志中看到输出......当我在脚本执行的 python 文件中取出 import [[class]] 时,我可以看到第一个打印语句,显然其余的失败,因为它依赖于该导入。当我离开 import 语句时,python 脚本没有输出,任何地方都没有错误......只是死了。
  • 如果我只是从控制台运行脚本,一切正常。

标签: python shell ubuntu cron sh


【解决方案1】:

从 Linux 命令行,运行:

echo $PATH

获取您看到的输出并将其放入您的 cron 脚本中,该脚本当前显示为“PATH=/usr/local/bin”。它现在可能看起来像:

PATH=/usr/local/bin:/usr/bin:/usr/local/sbin

cron 不一定有权访问您的环境变量。通过这样做,您就明确地告诉它。

[已编辑] 还告诉 cron 显式 cd 进入脚本所在的目录。 cron 文件行现在看起来像:

10 10 * * * cd /home/keht/directoryname && /home/keht/batchscript

将上面的 /home/keht/directoryname 替换为批处理脚本所在目录的完整路径,并将 /home/keht/batchscript 替换为批处理脚本的完整路径。 (10 10 *** 只是举例,改成你想要的。)

【讨论】:

  • keht@ubuntu:/usr/local/bin$ echo $path
  • 它必须完全如图所示。全部大写 - 'PATH' 而不是 'path'
  • 对!抱歉,我在发布后就注意到了......所以终端中的这个是:/home/keht/bin:/home/keht/.local/bin:/usr/local/sbin:/usr/local/bin :/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 我将它添加到 PATH 变量中。 cron 仍然失败。
【解决方案2】:

感谢您的帮助。我终于找到了解决方案。我不确定为什么它以前不能与每个人的解决方案一起使用,但我猜这归结为我对 linux 和 python 的无知。我可能错过了一些对其他人来说完全是常识的东西。

基本上在我的主要 python 脚本中,我明确告诉它在哪里可以找到第 3 方模块,但执行以下操作:

import imp

myclass = imp.load_source('myclass', '/usr/local/bin/myclass.py')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多