Python数据分析第八章
按计划自动运行脚本
8.1 任务计划程序(Windows系统)
略
8.2 cron工具(macOS系统和Unix系统)
cron程序依赖于cron表文件和cron任务来确定何时运行特定的可执行文件。cron表文件是个纯文本文件,你可以创建这个文件,在文件中列出所有想按计划自动运行的可执行文件,以及每个文件开始运行的具体时间。一个cron任务就是cron表文件中的一行,设定了一个要运行的可执行文件以及这个文件开始运行的时间。
cron表文件中的cron任务的具体语法一开始理解起来会有些困难。每行中的前五项设置了运行可执行文件的频率。这五项从左到右分别是:分钟(0-59)、小时(0-23)、天(1-31)、月(1-13)和星期几(0-6)。每行中的最后一项设置了要按照设定频率运行的可执行文件。
有若干种方法可以设定前5项中的值。如果你想让可执行文件在某个项目的所有可能取值时都可以运行,那么就将这个项目设为一个星号(*)。例如、如果你想让文件每天都运行,那么就将第3个项目设为星号。相反,如果你想让文件在一个具体的时间运行,那么就应该将前两项设置为具体数值。
例如:
10 15 * * * /.../analyze_orders.py
0 6,12,18 * * 1-5 /.../update_database.py
30 20 * * 6 /.../delete_temp_files.sh
第一行设置了analyze_order.py应该在每月每日的下午3:10运行。第二行设置了应该在每月的每个工作日(周一到周五)的早上6:00、中午12:00和傍晚6:00各运行一次。第三行设置了应该在每月的每个星期六晚上8:30运行。
# 在每月的第一个星期以的上午11:00运行
00 11 1-7 * * [ "$(date '+\%a')" = "Mon" ] && /。。。/。。.py
8.2.1 cron表文件:一次性设置
要创建一个新的空cron表文件,在终端输入:
touch crontab_file.txt
要想加载cron表文件(就是让操作系统加载cron表文件并按计划执行其中的命令),在终端输入:
crontab crontab_file.txt
最后,从创建crontab_file.txt的位置删除他:
rm crontab_file.txt
还有用来编辑cron表文件的 crontab -e 命令
8.2.2 向cron表文件中添加cron任务
输入
crontab -e
之后会在基于Unix的文本编辑器中打开,这样的文本编辑器包括Nano,vi/Vim,Emacs。你
如果是用vi/Vim打开了文件,那么你使用的编辑器就有两种模式:命令模式和插入模式。文件刚打开时,编辑器处于命令模式,此时你输入的按键为作用在文件上的命令,而不是文件中需要的文本。要想从命令模式进入插入模式,需要输入命令i。
输入:
# 每月最后一天的上午9:00运行脚本
00 09 28-31 * * [ "$(date -v+1d '+\%d')" = "01" ] && /。。。/...py
保存并退出:esc后输入 :wq 回车
查看cron表文件中的内容,输入以下命令:crontab -l