大家好,我是小一
明天的文章源自于工作中的一个小技巧,次要是波及到日常工作的自动化解决。
如果说你每天都须要做一些反复的工作,比方出一份报告、统计一个数据、发一封邮件等等
那你齐全能够把这个工作交给电脑让它每天主动替你实现,而你只须要从容的关上保温杯,静静地泡一杯枸杞
明天次要会用到Linux下的cron这个服务,ok,间接开始
1. 装置cron
基本上所有的Linux发行版在默认状况下都预装置了cron工具。
即便未预装cron,也很简略,执行几条简略的命令就可手动装置
# 查看是否曾经预装了cronservice cron status
装置并启动服务
装置:apt-get install cron启动/进行/重启:service cron start/stop/restart查问当前任务:crontab -l
2. 装置查看
装置实现后检查一下是否装置胜利,同样应用 status命令查看
呈现如下提醒示意装置胜利:
另外,在ubuntu下可能会呈现这样的提醒:
这个也示意能够失常应用
3. cron用法
有几个对于cron的简略用法能够理解一下,前面也会通过一个案例具体介绍如何应用
首先,列出以后用户打算的cron作业:
crontab -l
查看其它用户的cron作业:
crontab –l –u username
移除曾经打算的cron作业:
crontab –r
4. 调度crontab打算
首先,通过如下命令增加或更新crontab中的工作
第一次进入会要求你抉择编辑器,这个依据本人的习惯抉择。
抉择好之后会进入到这样的一个界面:
用过vim的同学应该对这个界面不生疏,相似的操作:按A键开始编辑,按ESC输出wq保留并退出
重点是最上面的一段内容:
m h dom mon dow commmand
这个其实就是crontab调度作业的一个应用介绍,能够用来设置定时工作。
具体一点的语法是这样的:
m h dom mon dow command* * * * * command- - - - - -| | | | | || | | | | --- 预执行的命令| | | | ----- 示意星期0~7(其中星期天能够用0或7示意)| | | ------- 示意月份1~12| | --------- 示意日期1~31| ----------- 示意小时1~23(0示意0点)------------- 示意分钟1~59 每分钟用*或者 */1示意
举几个简略的利用案例:
- 每天 02:00 执行工作
0 2 * * * command
- 每天 5:00和17:00执行工作
0 5,17 * * * command
- 每 10min 执行一次工作
*/10 * * * * command
- 在特定的某几个月的周日 17:00 执行工作
0 17 * jan,may,aug sun command
差不多罕用的就这些,更多的应用案例还能够参考这个链接:http://linux.51yip.com/search...
下面案例中的command 示意你具体须要执行的工作,例如打印一段话:
echo "Hello xiaoyi" >> /tmp/test.txt
或者将这段话输入到txt中:
echo "Hello xiaoyi" >> /tmp/test.txt
或者是你须要执行一个Python脚本:
python demo.py filepath
前面的filepath示意输出的参数args,这个可能有的同学会用到,例如上面的案例中须要输出文件下载门路。
5. 实战
下面的都搞清楚了,就能够开始明天的重头戏了。
首先咱们须要每天从ftp服务器中下载最新的工作数据,将数据下载到本地后通过Python进行数据汇总统计,最初将后果存入数据库中,如果期间某个环节呈现问题则发送告警邮件。
① Python脚本
首先须要Python脚本实现以下性能:
- 从数据库中获取最新数据日期
- 从ftp中下载最新数据到本地
- 对本地最新数据进行汇总统计
- 统计后果存入数据库汇总
- 邮件告诉
下面这个流程大抵的伪代码是这样的:
if __name__ == '__main__': """获取最新数据日期""" latest_date = get_max_date() # 以最新日期为名创立文件夹 download_dir = os.path.join(sys.argv[1], latest_date) if not os.path.exists(download_dir): os.makedirs(download_dir) """从ftp中下载最新数据""" download_file(latest_date, download_dir) """解决最新数据并保留""" process_data(latest_date, download_dir)
邮件监控能够在加一个try catch的异样捕捉,有异样产生的时候则发送邮件
Python编辑邮件内容并发送以前也有写过,能够参考上面这个:Python邮件发送
②编写cron工作
关上crontab,编辑如下内容到最初一行,保留并退出
crontab是会主动实时更新工作列表的,如果不释怀也能够通过restart命令重启cron 服务【参考文章结尾】
这里有个小倡议,所有的门路都填写绝对路径
③ 成果监控
如果Python代码没有问题,工作会定时执行。
这里倡议能够把本人的command独自在控制台运行下,没有问题的时候再写进到cron工作列表红。
最终小一的定时工作运行截图如下:
最上面是ftp文件下载,下面是数据汇总统计
说点题外话
如果说你平时的工作有很多反复的工作,像日常指标的采集、取数汇总统计、邮件主动转发等等
一旦这些工作你能够通过脚本设置好逻辑,自动化工作也就能够实现它,最多就须要你每天留神一下邮件,看看有没有产生谬误就行了。
原创不易,欢送点赞噢
文章首发:公众号【知秋小一】文章同步:掘金,简书,csdn