【问题标题】:how to run the python program using cron scheduling如何使用 cron 调度运行 python 程序
【发布时间】:2014-04-18 17:36:51
【问题描述】:

我希望每天在特定时间运行一个 python 网络抓取程序。为此,我在 ubuntu 的 cron 中使用此命令

28 22 * * * root /home/ahmed/Desktop python hello.py

它只是不起作用。一定有什么问题。谁能帮帮我?

【问题讨论】:

  • 手动发出/home/ahmed/Desktop python hello.py命令是否有效?可能你需要类似28 22 * * * root python /home/ahmed/Desktop hello.py

标签: python ubuntu cron


【解决方案1】:

尝试将#!/usr/bin/python(称为 shebang 行)添加到 Python 脚本的顶部,然后

28 22 * * * root /home/ahmed/Desktop/hello.py

您必须像这样使您的脚本可执行(作为单独的命令运行): sudo chmod +x /home/ahmed/Desktop/hello.py

来自维基百科上的Shebang page

在类 Unix 操作系统下,当运行带有 shebang 的脚本时 作为一个程序,程序加载器解析脚本的其余部分 初始行作为解释器指令;指定的解释器 相反,程序运行,将路径作为参数传递给它 最初在尝试运行脚本时使用。[8]例如,如果一个 脚本以路径“path/to/script”命名,并以 以下行: #!/bin/sh 然后程序加载器被指示运行程序“/bin/sh”(通常这是 Bourne shell 或兼容的 shell),将“path/to/script”作为第一个参数传递。

如果您不想更改任何内容,这也可以:

28 22 * * * root python /home/ahmed/Desktop/hello.py

【讨论】:

  • #应该是python脚本中的注释吧?
  • #在 Python 中 的注释,是的,但 #! has special meaning to the OS。您还需要确保 /home/ahmed/Desktop/hello.py has the executable bit set.
  • @user3415869 更新了我的答案
  • 我把#!/usr/bin/python 放在python 脚本中(被文本编辑器识别为注释),然后运行你提到的命令,但它仍然不起作用
  • @user3415869 您还必须使您的脚本可执行:sudo chmod +x /home/ahmed/Desktop/hello.py
【解决方案2】:

/home/ahmed/Desktop (很可能!)不是有效的命令名称。你想要的

28 22 * * * root python hello.py

或者可能

28 22 * * * root python /home/ahmed/Desktop/hello.py

在某种程度上取决于您将文件夹名称放在那里的原因。

普通用户crontab 的语法不同。我可以想象没有正当理由以root 运行一个 scaping 程序。要从您自己的 crontab 运行它,您应该使用

28 22 * * * python /home/ahmed/Desktop/hello.py

(同样可能没有路径名,或者在命令行中的其他位置使用路径)。

【讨论】:

  • 完美!谢谢。如果我的电脑关闭,这个程序会运行吗?
  • cron 作业不会导致您的计算机自行开启,不会。没有电源时,Cron 也没有运行。
  • 无论我的电脑是关闭还是打开,我都打算每分钟永远运行这个程序。有什么办法吗?
  • 这不再是编程相关的。向askubuntu.com 或类似论坛发布新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 2019-11-05
  • 2013-09-26
  • 2017-02-16
  • 1970-01-01
相关资源
最近更新 更多