大家好,我是小一
明天的文章源自于工作中的一个小技巧,次要是波及到日常工作的自动化解决。
如果说你每天都须要做一些反复的工作,比方出一份报告、统计一个数据、发一封邮件等等
那你齐全能够把这个工作交给电脑让它每天主动替你实现,而你只须要从容的关上保温杯,静静地泡一杯枸杞
明天次要会用到 Linux 下的 cron 这个服务,ok,间接开始
1. 装置 cron
基本上所有的 Linux 发行版在默认状况下都预装置了 cron 工具。
即便未预装 cron,也很简略,执行几条简略的命令就可手动装置
# 查看是否曾经预装了 cron
service 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