【问题标题】:Running a python script at a fixed time everyday with crontab使用 crontab 每天在固定时间运行 python 脚本
【发布时间】:2016-11-21 03:55:47
【问题描述】:

首先,我已经尝试了本网站和其他网站上建议的所有方法,但我仍然无法让它发挥作用。 我的 python 脚本位于我的主文件夹中。它导入请求、时间和其他第三方模块等模块。它适用于命令行。 但它不适用于 crontab。我认为问题在于,当它从 cron 运行时,导入不起作用并且脚本失败。 crontab:

PATH=/sbin:/bin:/usr/sbin:/usr/bin
SHELL=/bin/bash
PYTHONPATH=/home/chanzerre:/usr/lib64/python35.zip:/usr/lib64/python3.5:/usr/lib64/python3.5/plat-linux:/usr/lib64/python3.5/lib-dynload:/usr/lib64/python3.5/site-packages:/usr/lib/python3.5/site-packages
* * * * * /home/chanzerre/script.py

我的 Python 脚本的结构:

#! /usr/bin/python3.5
import requests as req
import time
from pprint import pprint
# third party imports here

#code here

有人可以帮忙吗? 如果需要,会提供更多详细信息。

附: 请不要将其标记为欺骗,因为我已经尝试了其他人提出的类似问题中建议的所有方法,并且为了我的生命,它仍然不起作用。

【问题讨论】:

  • 显示你的 crontab 语句
  • @joelgoldstick 我编辑了问题。

标签: python python-3.x crontab


【解决方案1】:

您是否尝试过将您的script.py 设为可执行文件?仅输入 Python 文件的路径不会运行脚本。您需要在文件中添加 shebang:

#!/usr/bin/python

然后使其可执行:

$ mv /home/chanzerre/script.py /home/chanzerre/script
$ chmod +x /home/chanzerre/script

那么你的 crontab 就变成了

* * * * * /home/chanzerre/script

试试看它是否运行你的文件。

【讨论】:

  • 您是否尝试过并且只是让文件中的代码做一些非常简单的事情?就像将"ran crontab" 写入主目录中的文件一样?我想我只是想知道它是否曾经奏效过,或者有什么证据可以证明它确实奏效了。
  • 一些简单的作品。例如,print('hello') 在导入之前起作用。
  • print("hello"); import requests; [more imports]; print("End") 呢?
  • 它只打印你好,之后什么都没有。
  • 你是如何安装这些库的?我想知道您是否使用与当前脚本的 shebang 不同的 python 可执行文件安装了它们。 which python 显示什么?
【解决方案2】:

您是否设置了脚本运行所需的所有环境变量?如果没有,它将不起作用。例如,如果您在代理服务器后面运行该脚本,并且未设置代理变量,它将不起作用。 在 crontab 或 python 脚本本身中设置您的代理变量,它将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 2020-11-01
    • 2021-09-10
    • 2015-08-18
    • 1970-01-01
    • 2017-09-25
    • 2015-10-05
    • 2017-12-16
    相关资源
    最近更新 更多