文章定时自动采集(1.安装cron基本上所有的Linux发行版小技巧,你知道吗?)
优采云 发布时间: 2021-11-14 11:09文章定时自动采集(1.安装cron基本上所有的Linux发行版小技巧,你知道吗?)
大家好,我是小学生
今天的文章来源于工作中的一个小技巧,主要是涉及到日常工作的自动化处理。
如果你每天需要做一些重复性的工作,比如发报告、统计数据、发邮件等。
然后你就可以把这个任务交给电脑,让它每天自动为你完成,你只需要从容的打开保温瓶,静静地泡一杯枸杞。
今天主要用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表示
举几个简单的应用案例:
0 2 * * * command
0 5,17 * * * command
*/10 * * * * command
0 17 * jan,may,aug sun command
这些是最常用的。更多用例可以参考这个链接:
上述案例中的命令表示您需要执行的特定任务,例如打印一个段落:
echo "Hello xiaoyi" >> /tmp/test.txt
或者把这段话输出到txt:
echo "Hello xiaoyi" >> /tmp/test.txt
或者你需要执行一个 Python 脚本:
下面的文件路径代表输入参数args,可能有同学会用到。例如,在下面的情况下,您需要输入文件下载路径。
5. 实战
搞清楚了以上这些之后,我们就可以开始今天的重头戏了。
首先,我们需要每天从ftp服务器下载最新的任务数据,将数据下载到本地并通过Python采集数据,最后将结果存入数据库。如果在此期间某个链接出现问题,则会发送警报电子邮件。
① Python 脚本
首先需要一个Python脚本来完成以下功能:
上述过程的近似伪代码如下:
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 代码没有问题,就会定期执行任务。
建议可以单独在控制台运行自己的命令,没问题的时候写红色的cron任务列表即可。
小一计划任务最终截图如下:
底部是ftp文件下载,顶部是数据汇总统计
题外话
如果说平时的工作中有很多重复的任务,比如每日指标的采集、访问的汇总统计、邮件自动转发等。
一旦您可以通过脚本为这些任务设置逻辑,自动化任务也可以实现它。最多就是每天关注一下邮件,看看有没有错误。
原创不容易,请点个赞
文章 首发:公众号【初级学习笔记】
原文链接:普及一个小作业技巧,三步实现Python自动化