python - 使用 Crontab 运行简单的 Python 文件

标签 python linux cron

我正在尝试使用 crontab 运行一个简单的 Python 脚本,但我无法让它工作。不过,当我不使用 Python 时,我可以在 crontab 中运行一个简单的程序。这是我的 Crontab 文件中有效的行:

* * * * * echo “cron test” >> /home/ftpuser/dev/mod_high_lows/hello.txt

我也可以直接从命令行运行这个 python 脚本 testit.py。这是我的 testit.py 文件,它输出一个 csv 文件。

#!/usr/bin/env python

import f_file_handling
_data = [(12,15,17)]
f_file_handling.csv_out('my_file_test',_data)

上面的文件有一个我创建的函数,但我知道它可以工作,因为当我从命令行运行 testit.py 时,它会按照我的预期运行,如下所示:

python testit.py

所以我让 Crontab 自己工作,让 testit.py 文件自己工作,然后我尝试用 Crontab 运行 testit.py 文件。 我确实使用命令使 testit.py 文件可执行:

chmod +x testit.py 

我看到了它的可执行文件,因为当我在正确的目录中时,该文件在我的 linux 命令窗口中显示为绿色。 现在,在我用来运行早期 Crontab 测试的同一个 Crontab 文件中,我添加了以下行:

* * * * * /home/ftpuser/dev/mod_high_lows/testit.py

是的,我试图让它每分钟都执行一次,只是试图运行最简单的测试来让 Crontab 和 Python 协同工作。

这是我正在使用的:

  • Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-52-generic x86_64)

  • Python 2.7

以上是我搭建的linux服务器上的

你在我的 testit.py 文件的顶部看到了 shebang 行,根据我的研究,这应该有效。
至于我的 testit.py python 文件,我是在 Windows 机器上编写的,然后将其传输到服务器,但是当 crontab 和 python 不能一起工作时,我还使用 Nano 文本编辑器从 Linux 命令窗口对该文件进行了编码,但是这在尝试通过 Crontab 运行 testit.py 文件时没有任何区别。因此,即使我直接在 Linux 服务器上编写 testit.py 代码,它也不会运行(以防 Windows 在我的文件中创建隐藏字符)。

最佳答案

  • cron 在有限的环境中运行命令。只有几个环境变量 自动设置。它加载由 /etc/environment 指定的环境 和 /etc/security/pam_env.conf,但与您的环境变量无关 可能已在您的 .bashrc.profile 中设置。

    设置crontab入口

    *   *    *    *    *   /usr/bin/env > /tmp/out
    

    看看实际设置了哪些环境变量。 拥有/tmp/out 后,不要忘记删除 crontab 条目。

  • 运行 Python 脚本时,一个重要的环境变量 大概需要设置的是PYTHONPATH。所以在你的 crontab 的顶部添加一个 PYTHONPATH 设置如:

    PYTHONPATH=/home/ftpuser/dev/mod_high_lows
    

    一定要添加包含f_file_handling模块的目录,这样 Python 会在运行语句时找到模块

    import f_file_handling
    
  • 最后,还要注意 cron runs commands in your home directory默认情况下。 然而,最好是明确的,并在您在脚本中指定文件时提供完整路径:

    f_file_handling.csv_out('/path/to/my_file_test',_data)
    

关于python - 使用 Crontab 运行简单的 Python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031111/

相关文章:

linux - Solr 在 Linux 操作系统上挂起创建核心的原因是什么?

linux - 从 sh 文件发送命令并通过 ssh 保持登录状态

python - 替代 makefile 为 python 项目集成多个 python 文件

php - 如何使用 cron 作业运行 php 文件

python - 如何在 Flask + Gunicorn 应用程序中使用后台调度程序

ruby-on-rails - 在生产环境中执行由 gem 创建的 cron 时缺少所需的 gem

python - 分割数据帧并根据循环写入新的 csv

python - 如何使用 LDA (Python) 从标题列表生成主题?

python - Paramiko 无法识别由 ssh-keygen 生成的 SSH key : "not a valid RSA private key file"

Python 和 Asterisk