脚本调度在数分工作中十分常见。
比如一些核心数据老板想每天都看到,如果每天早上都来做一遍数据整理并发送,这样效率太低了。正确的做法是写好python脚本,每天定时调度它,自动发送邮件日报给老板。
又比如某个数据库的表格数据量实在太大了,想提高查询效率,可以写一个中间表,每天凌晨定时插入过滤后的数据,往后查询就只需查找这个数据量较少的中间表即可。总之,脚本调度很重要,学就是。总结两种调度方法:1、Linux crontab调度 。2、windows任务计划程序
Linux crontab调度
使用这种调度方法有些前提条件:
1、需要懂一些常用的linxu语句
2、需要一台服务器
Linux crontab调度语法
crontab的命令构成是时间+动作,其时有分时日月周5种,对应的顺序如下图:
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要执行的命令
* * * * * command
分时日月周 调度脚本的命令
用一些例子继续讲述,假设我想每天凌晨1点30分调度在/home/data/路径下的run.py的文件,那这样写:
30 01 * * * python3 /home/data/run.py
分 时 日月周 python 绝对路径/py脚本
还需注意一些crontab的操作符:
*(星号):此操作符为字段指定所有可用的值。举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。
,(逗号):代表分隔时段的意思。举例来说,如果要执行的工作是每天的2点和4点时候,这么写。
0 2,4 * * * command
-(减号):代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:
20 8-12 * * * command
其实它等同于。
20 8,9,10,11,12 * * * command
/n(斜线):n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:
*/5 * * * * command
crontab使用步骤及相关操作:
1、安装日志来检测任务是否真正被执行了
2、启动crontab,第1、2步只有初次使用才需要,往后直接进行第三步即可。
3、编辑crontab任务,会需要一个vim文档
在文档的最后面进行编辑。这里的意思是每分钟会在目录下创建一个空白文件。
4、添加完crontab命令后,按ctrl + o,然后按回车键,在按ctrl +x 退出编辑,这时服务器会显示出:installing new crontab,代表crontab插入成功。
5、我们可以用crontab -l查看添加了什么调度任务
6、通过日志查看执行情况
7、可以用crontab -r删除crontab任务
windows任务计划程序
windows的任务计划程序优点很明显,不用写命令,操作图形化。缺点也明显:需要保持电脑在调度时间不关机以及不能直接跑python脚本,需要把py打包成exe。
首先先说说怎么把python脚本包装成exe程序,这块其实很简单。
1、安装 pyinstaller库
pip install pyinstaller
2、将D盘Data文件夹的run.py打包exe
pyinstaller -F D:Datarun.py
3、生产的exe文件会在自动生成的dist文件夹下
包装好exe后,说说windows任务计划程序怎么用?
1、打开任务计划程序
右键计算机 → 管理 → 任务计划程序
2、创建基本任务
创建基本任务 → 输入任务名称 → 触发器(选择触发时间或触发规则)
→ 操作(选择启动程序/发送电子邮件/显示消息,由于我们是运行py脚本,所以选择启动程序) → 启动程序(选择python脚本的exe) → 完成。
两种调度方法已总结完毕,感谢阅读!
一个记录会计到数据、算法路上所学的微信公众号:Dathon
编程技能篇正逐渐完善:
小匿:数据分析师所需的编程技能 : Html篇zhuanlan.zhihu.com