【问题标题】:Run Python script from Ubuntu cronjob从 Ubuntu cronjob 运行 Python 脚本
【发布时间】:2019-02-12 19:44:35
【问题描述】:

我正在尝试在运行 Ubuntu 18 的 VM 上运行一个简单的 Python 脚本,该 VM 托管在我的 Synology 上。 python 脚本只是在文件中打印日期和时间,以便我可以检查它是否运行。它看起来像这样:

from datetime import datetime
with open('file.txt','a') as file:
    file.write('Recorded at: %s\n' % datetime.now())

我做了一个如下所示的 cronjob:

* * * * * /home/anaconda3/bin/python3.7 /home/Documents/crontest.py

我尝试了很多变化。例如不写 3.7 而只是简单地写'python'。我尝试了默认的python路径/usr/bin/python3.7。

此外,我尝试将 shebang #!/home/anaconda/bin/python3.7 添加到脚本中,并在 cronjob 中省略了路径。

感觉我在这里遗漏了一些基本的东西。我尝试了 Stack 和其他论坛上发布的许多选项,但似乎没有一个选项可以解决我的问题。

【问题讨论】:

  • 1) 你的 Python 代码的索引被破坏了。 2) 它是#!,而不是!#。 3) Python 真的 安装在哪里? which python3 告诉你什么?
  • CronJob not running的可能重复
  • 也可以试试命令:pypy3python3
  • @LutzHorn 1,2) 我的抄袭技巧很差。在问题中修复它。 3) /home/anaconda3/bin/python3.我相应地更改了 cronjob 中的代码,但没有任何区别。
  • 手动运行可能是权限问题?或者如果您将 cron 更改为 /home/anaconda3/bin/python3.7 /home/Documents/crontest.py 2>&1 | tee crontest.log

标签: python ubuntu cron


【解决方案1】:

运行 cronjobs 时不允许在 python 脚本中使用相对链接。所以当我这样写时它可以工作:

from datetime import datetime
with open('/home/Documents/file.txt','a') as file:
    file.write('Recorded at: %s\n' % datetime.now())

此外,我使用了错误的 python 路径。我写的是 /python3.6 而不是 /python3 我通过键入找到的

which python3

在终端中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多