百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

一文详解 Linux Crontab 调度任务

liuian 2024-12-01 00:59 21 浏览

最近接到这样一个任务: 定期(每天、每月)向“特定服务器”传输“软件服务”的运营数据,因此这里涉及到一个定时任务,计划使用Python语言添加Crontab依赖写一个定时任务的脚本,实现每天、每月向服务器上传运营数据。
这篇文章是我在实现以上需求过程中,对于Crontab的使用总结。

  • Crontab 概述
  • Crontab 环境搭建
  • Crontab 使用案例(Python)
  • Crontab 使用详解
  • Crontab 操作命令行(Linux)

一、Crontab 概述

Linux环境中,Crontab是一个调度守护进程,可以按分钟、小时、每月的某天、每月、每周的某天来执行特定任务,这些特定的任务被称为 Cron 作业,基于这个特点,Crontab 经常被用于自动执行系统维护与管理
例如:可以使用 Crontab 来自动执行一些重复性的工作,比如定期发送邮件、备份数据库、备份软件运行数据、下载最近的软件补丁等等。

Crontab 文件:

在 Linux 环境中,当我们使用Crontab命令创建cron 作业后,系统中会生成一个 Crontab 文本文件,用于指定 cron 作业的时间表

  • 在基于 Red Hat 的发行版系统,如 CentOS,crontab 该文件的存储在/var/spool/cron/目录下;
  • Debian 、Ubuntu等系统中,该文件存储在/var/spool/cron/crontabs/目录下。

如下所示/var/spool/cron/目录下的Crontab文件:

注:
虽然我们了解到了 Crontab 的文件路径,但并不建议手动编辑该文件,官方推荐在终端使用crontab命令操作该文件。

二、Crontab 环境搭建

当然在正式介绍环境搭建之前,先向朋友们汇报一下我的虚拟机环境与使用的Python版本。
我使用的虚拟机环境为
CentOS 7


Python版本为
Python 3.11.1

  • Centos 安装 cronie
  • Python 安装 python-crontab 依赖

2.1 Centos 安装 cronie

在Linux中使用Crontab之前,需要先确保安装了Crontab,安装命令如下:

# Centos 安装 cronie
yum install cronie
# 查看 Crontab 任务
crontab -l

Centos 7安装 Crontab:

2.2 Python 安装 python-crontab

在Python中使用 crontab ,还需要下载其对应的依赖包,下载安装方式如下:

# 安装Crontab
pip3 install python-crontab

Python 安装 Crontab 依赖:

若安装过程中遇到SSH支持问题相关的错误提醒,可更换如下方式进行安装:

# 安装Pycrypto:(豆瓣源)
pip3 install python-crontab -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

三、Python中使用Crontab

Crontab 在 Python中的使用相对简单,我们采用如下方式创建定时任务。


from crontab import CronTab  
  
# 创建linux系统当前用户的crontab(当然也可以创建其他用户的,但需要对应的权限,如:user='root')  
my_user_cron = CronTab(user=True)  
# ~~~~~每日任务~~~~~  
# 创建任务(指定绝对路径)  
daily_job = my_user_cron.new(  
    command='python3 /home/workspace/Python3ForSftpjy5g/sftp_daily.py >> /home/workspace/Python3ForSftpjy5g/assets/output/log_crontab.txt')  
# "每天凌晨2点" 执行一次 sftp_daily.py  
daily_job.setall('0 2 * * *')  
# ~~~~~每月任务~~~~~  
# 创建任务(指定绝对路径)  
monthly_job = my_user_cron.new(  
    command='python3 /home/workspace/Python3ForSftpjy5g/sftp_monthly.py >> /home/workspace/Python3ForSftpjy5g/assets/output/log_crontab.txt')  
# "每月1日凌晨2点" 执行一次 sftp_monthly.py  
monthly_job.setall('0 2 1 * *')  
# 将crontab写入linux系统配置文件  
my_user_cron.write()  
  
# 命令行输入:python3 crontab_job.py 执行该py脚本,则定时任务设定完毕!  
# 此刻在Linux终端 输入 contrab -l 可查看所有定时任务。

四、Crontab 使用详解

在crontab文件与crontab命令中,每一行都包含由空格分隔的5个字段,其后跟要执行的定时任务。

4.1 crontab五个字段含义

这里举了几个简单的例子,帮助大家理解这五个字段的含义:

0 * * * *   # 每小时(整点)执行一次
0 1 * * *   # 每天凌晨1点执行一次
0 1 * * 0   # 每周星期日凌晨1点执行一次
0 1 1 * *   # 每月1号1点执行一次
0 1 1 1 *   # 每年1月1日1点执行一次

4.2 分隔与连字符用法

crontab的五个字段可能包含一个或多个值字段内由逗号分隔或由连字符分隔

  • * 星号运算符表示任何值或始终:
    如果您在 Hour 字段中有星号符号,则表示该任务将每小时执行一次。
  • , 逗号运算符允许指定要重复的值的列表:
    例如,如果1,3,5设置在“小时”字段中,任务将在凌晨1点、凌晨3点、凌晨 5点执行。
  • -连字符运算符允许指定一个值范围:
    入力,如果1-5设置在“星期”字段中,任务将从星期一到星期五运行。
  • /斜杠运算符允许指定将在它们之间的特定间隔内重复的值。
    例如,如果*/4设置在“小时”字段中,则表示该操作将每四个小时执行一次;其与0,4,8,12,16,20的设定含义相同。

这里举了几个简单的例子,帮助大家理解分隔与连字符用法:

*/5 * * * *    # 每5分钟执行一次
0 8-16 * * *   # 每天从上午8点到下午4点整点执行一次
0 15 * * 1-5   # 周一到周五每天15:00执行一次
0 3 1,15 * *   # 每个月1号、15号凌晨3点执行一次

五、Linux Crontab 命令行

Linux Crontab 命令行简述如下:

  • crontab -e 编辑 crontab 文件,如果不存在则创建一个。
  • crontab -l 显示 crontab 文件内容。
  • crontab -r 删除当前的 crontab 文件。
  • crontab -i 删除您当前的 crontab 文件,并在删除前提示。

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...