【问题标题】:How to run python script from Linux terminal every hour?如何每小时从 Linux 终端运行 python 脚本?
【发布时间】:2017-06-27 12:01:31
【问题描述】:

所以我想每小时从 linux 终端运行这个命令 python run.py。 最好的方法是什么?

【问题讨论】:

  • 你看过 cron 吗?
  • 您真的需要在 终端 中运行该脚本吗(阅读 tty demystified 以了解“终端”的复杂度),或者您只是希望该脚本每小时运行一次(没有终端)?请编辑您的问题以改进它并激发它(run.py 在做什么,它到底在哪里)?你说“the linux终端”,但一般来说你可能有几个(伪)终端,你可能没有任何物理终端(à la VT100,在博物馆......)
  • 出于兴趣,为什么使用终端而不是带有日志文件的批处理作业?

标签: python linux


【解决方案1】:

使用编辑你的 crontab crontab -e
添加以下行以每小时运行一次脚本

0 * * * *  python <path-to-file> 

您可以使用 crontab -l 列出计划的 crons

【讨论】:

  • 很好,但是这不会在 终端 中运行脚本,而只是在批处理作业中运行
【解决方案2】:

简单的方法是使用cron 作业,使用这个命令 crontab -e你会看到下图

您可以将此命令添加到 cron 配置中:

* */1 * * * python /root/yourprogram.py > /dev/null 2>&1

*/1 用于每小时执行一次 python 程序,查看cron 命令的结构:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
    0        2          12             *                *            /usr/bin/find

【讨论】:

    【解决方案3】:

    在 unix 上使用命令watch 在任何设定的时间间隔内运行任何命令。

    更多信息:https://en.wikipedia.org/wiki/Watch_(Unix)

    (选择这种方式而不是 cron,因为您在终端中指定,这将允许您在启动它的终端中查看输出)

    【讨论】:

      【解决方案4】:

      我建议您使用 apscheduler.schedulers.blocking 中的 BlockingScheduler

      只需使用命令pip install APSchedulerpip3 install APScheduler 安装它。这很好。

      from apscheduler.schedulers.blocking import BlockingScheduler
      
      def your_job():
          print("Do you job")
      
      scheduler = BlockingScheduler()
      scheduler.add_job(your_job, 'interval', seconds=5)
      scheduler.start()
      

      每 5 秒后,

      Do you job
      Do you job
      

      将被打印。很棒的是您还可以指定minuteshours,只需更改参数即可。因此,在您的情况下,只需将 seconds=5 更改为 hours=1

      from apscheduler.schedulers.blocking import BlockingScheduler
      def your_job():
              print("Do you job")
      
      scheduler = BlockingScheduler()
      scheduler.add_job(your_job, 'interval', hours=1)
      scheduler.start()
      

      【讨论】:

        猜你喜欢
        • 2018-05-04
        • 2023-03-30
        • 2020-11-27
        • 2021-07-31
        • 2016-07-23
        • 2018-06-04
        • 2016-12-20
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多