大家好,我是小一

明天的文章源自于工作中的一个小技巧,次要是波及到日常工作的自动化解决。

如果说你每天都须要做一些反复的工作,比方出一份报告、统计一个数据、发一封邮件等等

那你齐全能够把这个工作交给电脑让它每天主动替你实现,而你只须要从容的关上保温杯,静静地泡一杯枸杞


明天次要会用到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


原文链接:遍及一个工作小技巧,三步实现Python自动化