如何用crontab实现Python定时任务

举报
芥末拌个饭吧 发表于 2022/11/15 09:14:07 2022/11/15
【摘要】 说到定时任务,在生产中几乎不可避免。比如有个报表代码需要在凌晨生成,以便早上查看昨日的具体数据。实现定时任务的方法有很多,这里就来总结一下如何用Linux crontab实现Python定时任务。

前言

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



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。