写点什么

如何用 crontab 实现 Python 定时任务

  • 2022-10-23
    广东
  • 本文字数:873 字

    阅读完需:约 3 分钟

前言

说到定时任务,在生产中几乎不可避免。比如有个报表代码需要在凌晨生成,以便早上查看昨日的具体数据。实现定时任务的方法有很多,这里就来总结一下如何用 Linux crontab 实现 Python 定时任务。

Linux crontab 使用

直接使用 Linux 系统层的 crontab,它可以定期的执行我们的程序。


crontab 的语法简单: crontab [-u user] {-l | -r | -e}


  • -u user 是指设定指定 user 的时程表, 因为服务器不止有 root 用户,-u 参数即可指定用户。

  • -e: 该命令用来编辑 crontab 任务。

  • -l: 列出该用户所有的定时任务。

  • -r: 删除目前的定时任务。


而在我们编辑定时任务时,需要了解填写的任务格式,格式为:a1 a2 a3 a4 a5 {执行命令}


*    *    *    *    *-    -    -    -    -|    |    |    |    ||    |    |    |    ------ 星期中星期几 (0 - 6) (从周日开始算)|    |    |    ----------- 月份 (1 - 12) |    |    ---------------- 一个月中的第几天 (1 - 31)|    --------------------- 小时 (0 - 23)-------------------------- 分钟 (0 - 59)
复制代码


  • a1 表示分钟,a2 表示小时,a3 表示一个月的第几天,a4 表示月,a5 表示星期几。

  • 我们用来表示该时间节点都要执行,比如每分钟都要执行,则 a1 编辑为

  • 当表示为 A-B 比如 a1 编辑为 1-10,则表示第 1 到 10 分钟执行。

  • 当表示为*/n 时,表示每隔多久执行一次,比如 a1 = * / 5 表示每隔 5 分钟执行一次。

  • 当表示为 a,b,c 时,表示第 a,b,c 时间要执行,比如 a1 = 1,10,20 表示第 1、第 10、第 20 分钟都要执行。

常见的定时任务实例

比如我们有一个 Python 文件 a.py 路径为/data/,环境是 conda 环境 a_env 路径在~/conda/envs/a_env,下面来演示如何编写定时任务。


  • 每分钟执行一次:


* * * * * ~/conda/envs/a_env/bin/python /data/a.py
复制代码


  • 每天 7 点 20 执行一次:


20 7 * * * ~/conda/envs/a_env/bin/python /data/a.py
复制代码


  • 每月 1 号和 15 号执行


0 0 1,15 * *  ~/conda/envs/a_env/bin/python /data/a.py
复制代码


注意:新创建的 cron 任务,不会立刻执行,至少要过 2 分钟后才可以,或者可以重启 cron 来执行。

小结

这篇总结了下 Linux crontab 的使用方法,我们在定时任务的设置时,可以选择 crontab 这一简单的方式来实现。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2020-06-16 加入

还未添加个人简介

评论

发布
暂无评论
如何用crontab实现Python定时任务_学习方法_芥末拌个饭吧_InfoQ写作社区