【问题标题】:How to run a python script with cronjob in Ubuntu / Apache如何在 Ubuntu / Apache 中使用 crontab 运行 python 脚本
【发布时间】:2021-02-28 11:04:57
【问题描述】:

我正在尝试在我的 Apache2/Ubuntu 20.04 服务器中设置一个 cronjob。

我要执行的python文件如下:

def main():
print('TEST')
function()


def function():
    file1 = open("home/username/project/cron_test.txt","a")
    str1 = 'Test2 \n'
    file1.write(str1)
    file1.close() 

if __name__ == '__main__':
    main()

我已将我的 cronjob 定义如下:

* * * * * /home/username/project/venv/bin/python3 /home/username/project/cron_test.py

当我在 putty 中运行命令时,它工作得非常好,并且我得到了我想要的输出。 但是,当我将它放在 crontab 中时,python 脚本没有运行。

任何想法我做错了什么?我尝试了各种不同的方法,例如 cd 进入项目文件夹然后运行它,以及在 python venv 和代码之间放置一个 -f ,但我没有更接近。

感谢您的帮助。

最好的问候,

帕特里克

【问题讨论】:

    标签: python ubuntu cron


    【解决方案1】:

    也许尝试将您的脚本转换为可执行的 python 脚本,

    1. 将您的 cronjob 更改为 * * * * * /home/username/project/cron_test.py
    2. 使您的脚本可执行,即在终端运行chmod +x cron_test.py
    3. 将以下内容添加到脚本文件的顶部:#!/usr/bin/python3(或 Python 二进制文件所在的任何位置)

    【讨论】:

      【解决方案2】:

      改变这一行

      file1 = open("home/username/project/cron_test.txt","a")
      

      file1 = open("/home/username/project/cron_test.txt","a")
      

      【讨论】:

      • 您好 Canasta,感谢您的编辑,它完成了这项工作并且现在可以正常工作。现在我想更改我的代码,并且只运行 def function()。我将 cron 任务更改为 * * * * * /usr/bin/python3 -c 'from home.camielk.BolSellerTool.cron_test 导入函数; function()' 但现在它不再工作了。还有更多解决方案吗?
      • 看来没什么问题。区别是 /home/username/project/venv/bin/python3 更改为 /usr/bin/python3。检查这个和错字。
      猜你喜欢
      • 2017-11-11
      • 2013-07-05
      • 2022-01-05
      • 2021-09-10
      • 2015-09-29
      • 2015-10-05
      • 2017-12-16
      • 2016-07-19
      • 1970-01-01
      相关资源
      最近更新 更多