【Linux操作系统】深入解析Linux定时任务调度机制-cronat指令
在Linux操作系统中,定时任务调度是一项重要的功能,它可以让用户在指定的时间或周期性地执行特定的任务。这种机制使得用户能够自动化地执行一些重复性工作,提高工作效率。本文将详细介绍Linux定时任务调度的原理、常用指令和代码示例,帮助读者深入理解和应用该功能。
文章目录
- 一、定时任务调度原理
- 1. cron命令
- 2. at命令
- 二、常用指令和代码示例
- 1. crontab指令
- 2. at指令
- 3. 示例代码
- 三、两个定时任务调度命令的区别
- 1. 任务执行方式:
- 2. 任务配置方式:
- 3. 任务类型:
- 结论:
一、定时任务调度原理
Linux系统中的定时任务调度主要依赖于cron和at两个命令。cron是基于时间的任务调度器,它允许用户在指定的时间点或时间间隔内执行任务。at命令则是一次性的任务调度器,允许用户在指定的时间点执行一次任务。
1. cron命令
cron命令是Linux系统中基于时间的任务调度器,它允许用户在指定的时间点或时间间隔内执行任务。cron命令的配置文件是/etc/crontab,每行代表一个定时任务,由五个或六个字段组成,分别表示分钟、小时、日期、月份、星期和要执行的命令。
- 指定时间点执行任务
# 每天的12点30分执行backup.sh脚本
30 12 * * * /path/to/backup.sh
上述例子中,任务将在每天的12点30分执行指定路径下的backup.sh脚本。
- 指定时间间隔执行任务
# 每小时执行一次cleanup.sh脚本
0 * * * * /path/to/cleanup.sh
上述例子中,任务将每小时执行一次指定路径下的cleanup.sh脚本。
- 使用通配符
# 每天的0点到5点,每隔30分钟执行一次job.sh脚本
*/30 0-5 * * * /path/to/job.sh
上述例子中,任务将在每天的0点到5点之间,每隔30分钟执行一次指定路径下的job.sh脚本。
- 使用特殊字符
# 每月的最后一天执行monthly.sh脚本
0 0 28-31 * * [ "$(date +\%d -d tomorrow)" == "01" ] && /path/to/monthly.sh
上述例子中,任务将在每个月的最后一天执行指定路径下的monthly.sh
脚本。
除了/etc/crontab
,用户还可以使用crontab
命令来管理自己的定时任务。例如,使用crontab -e
命令编辑当前用户的定时任务,使用crontab -l
命令列出当前用户的定时任务。
2. at命令
at命令是Linux系统中的另一种任务调度器,它允许用户在指定的时间点执行一次性任务。用户可以使用at命令将命令或脚本提交到系统中,并指定具体的执行时间。
- 指定时间点执行任务
# 在当前时间的10分钟后执行backup.sh脚本
at now + 10 minutes
at> /path/to/backup.sh
at> Ctrl+D
上述例子中,任务将在当前时间的10分钟后执行指定路径下的backup.sh脚本。在输入at命令后,系统会进入at命令的交互模式,用户需要在at>提示符下输入要执行的命令或脚本,并使用Ctrl+D结束输入。
- 指定具体时间执行任务
# 在指定的日期和时间执行job.sh脚本
at 12:00 PM July 1
at> /path/to/job.sh
at> Ctrl+D
上述例子中,任务将在指定的日期和时间(12:00 PM July 1)执行指定路径下的job.sh脚本。
- 列出已提交的at任务
at -l
上述命令将列出当前用户已提交的at任务,包括任务的编号、执行时间和任务内容。
- 删除已提交的at任务
at -r <任务编号>
上述命令将删除指定编号的at任务。
二、常用指令和代码示例
1. crontab指令
- crontab -e:编辑当前用户的定时任务。
- crontab -l:列出当前用户的定时任务。
- crontab -r:删除当前用户的定时任务。
2. at指令
- at now + 10 minutes:在当前时间的10分钟后执行命令。
- at -l:列出当前用户的at任务。
- at -r:删除当前用户的at任务。
3. 示例代码
以下是一个使用定时任务调度的Python脚本示例,它每天定时执行一次:
import datetimedef backup():# 执行备份操作print("Backup completed at", datetime.datetime.now())if __name__ == "__main__":# 每天的12点30分执行备份函数schedule.every().day.at("12:30").do(backup)while True:schedule.run_pending()time.sleep(1)
上述代码使用了第三方库schedule
来实现定时任务调度。在主程序中,我们定义了一个备份函数backup()
,然后使用schedule.every().day.at("12:30").do(backup)
来指定每天的12点30分执行该函数。最后,通过循环调用schedule.run_pending()
来检查是否有定时任务需要执行。
三、两个定时任务调度命令的区别
1. 任务执行方式:
- cron命令:cron是基于时间的任务调度器,可以按照指定的时间点或时间间隔来执行任务。cron任务会在指定的时间周期性地执行,例如每天、每周、每月等。
- at命令:at是一次性的任务调度器,它允许用户在指定的时间点执行一次性任务。at任务只会执行一次,执行完成后就会被自动删除。
2. 任务配置方式:
- cron命令:cron任务的配置可以通过编辑系统的crontab文件(/etc/crontab)或使用crontab命令来完成。用户可以在crontab文件中指定任务的执行时间、执行命令或脚本等。
- at命令:at任务的配置是通过使用at命令将任务提交到系统中,并指定具体的执行时间。用户可以在at命令的交互模式下输入要执行的命令或脚本,并指定执行时间。
3. 任务类型:
- cron命令:cron任务适用于需要重复执行的任务,例如定时备份、定时清理等。用户可以根据需求配置不同的时间点或时间间隔来执行任务。
- at命令:at任务适用于一次性的任务,例如在特定的日期和时间执行某个任务。用户可以指定具体的执行时间,任务执行后会自动删除。
总结起来,cron命令适用于周期性重复执行的任务,而at命令适用于一次性的任务。
结论:
cron命令是基于时间的任务调度器,它允许我们在指定的时间点或时间间隔内执行任务。通过编辑/etc/crontab文件或使用crontab命令,我们可以灵活地配置定时任务。cron命令的用法包括指定时间点执行任务、指定时间间隔执行任务、使用通配符和特殊字符等。
at命令是另一种任务调度器,它允许我们在指定的时间点执行一次性任务。通过at命令,我们可以将命令或脚本提交到系统中,并指定具体的执行时间。at命令的用法包括指定时间点执行任务、指定具体时间执行任务、列出已提交的at任务和删除已提交的at任务。
总结起来,任务调度是一种非常有用的功能,在自动化执行任务方面发挥着重要作用。cron命令适用于需要重复执行的任务,而at命令适用于一次性的任务。通过合理配置任务调度,我们可以提高工作效率,减少手动执行任务的工作量。
相关文章:
【Linux操作系统】深入解析Linux定时任务调度机制-cronat指令
在Linux操作系统中,定时任务调度是一项重要的功能,它可以让用户在指定的时间或周期性地执行特定的任务。这种机制使得用户能够自动化地执行一些重复性工作,提高工作效率。本文将详细介绍Linux定时任务调度的原理、常用指令和代码示例…...

动手学深度学习(一)预备知识
目录 一、数据操作 1. N维数组样例 2. 访问元素 3. 基础函数 (1) 创建一个行向量 (2)通过张量的shape属性来访问张量的形状和元素总数 (3)reshape()函数 (4)创建全0、全1、…...

item_get-KS-获取商品详情
一、接口参数说明: item_get-根据ID取商品详情 ,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/ks/item_get 名称类型必须描述keyString是调用key(http://o0b.cn/…...
[华为OD] 最小传输时延(dijkstra算法)
明天就要面试了我也太紧张了吧 但是终于找到了一个比较好理解的dijkstra的python解法,让我快点把它背下来!!!! 文章目录 题目dijkstra算法的python实现python解答dfs解法dijkstra解法 题目 先把题目放出来 某通信网络…...

问道管理:总资产大于总市值好吗?
在财政领域,总财物和总市值是两个非常重要的指标。总财物是指公司所有的财物,包括固定财物、流动财物、无形财物等,而总市值则是指公司股票在商场上的总价值。当总财物大于总市值时,这是否是一个好的信号呢?咱们将从多…...

IBM Spectrum LSF (“LSF“ ,简称为负载共享设施) 用户案例
IBM Spectrum LSF (“LSF” ,简称为负载共享设施) 用户案例 IBM Spectrum LSF (“LSF” ,简称为负载共享设施) 软件是业界领先的企业级软件。 LSF 在现有异构 IT 资源之间分配工作,以创建共享,可扩展且容错的基础架构,…...

Pytorch深度学习-----神经网络之非线性激活的使用(ReLu、Sigmoid)
系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Co…...

Gis入门,使用起止点和两个控制点生成三阶贝塞尔曲线(共四个控制点,线段转曲线)
前言 本章讲解如何在gis地图中使用起止点和两个控制点(总共四个控制点)生成三阶贝塞尔曲线。 二阶贝塞尔曲线请参考上一章《Gis入门,如何根据起止点和一个控制点计算二阶贝塞尔曲线(共三个控制点)》 贝塞尔曲线(Bezier curve)介绍 贝塞尔曲线(Bezier curve)是一种…...

Web-7-深入理解Cookie与Session:实现用户跟踪和数据存储
深入理解Cookie与Session:实现用户跟踪和数据存储 今日目标 1.掌握客户端会话跟踪技术Cookie 2.掌握服务端会话跟踪技术Sesssion 1.会话跟踪技术介绍 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断…...
Springboot设置Https
1、修改配置文件application.yml,并将*.jks放到resource目录下。 server:port: 8080ssl:key-store: classpath:*.jkskey-store-password: *key-store-type: JKSenabled: truekey-alias: boe.com.cn2、添加http转https的配置 Configuration public class TomcatCon…...

Windows 使用 Linux 子系统,轻轻松松安装多个linux
Windows Subsystem for Linux WSL 简称WSL,是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机&#…...

中级课程——弱口令(认证崩溃)
文章目录 什么是弱口令密码生成器分类暴力破解万能密码测试环境工具 什么是弱口令 密码生成器 分类 暴力破解 万能密码 or true --测试环境 工具 九头蛇,超级弱口令爆破工具,bp,...

web自动化测试进阶篇05 ——— 界面交互场景测试
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...

NICE-SLAM: Neural Implicit Scalable Encoding for SLAM论文阅读
论文信息 标题:NICE-SLAM: Neural Implicit Scalable Encoding for SLAM 作者:Zihan Zhu, Songyou Peng,Viktor Larsson — Zhejiang University 来源:CVPR 代码:https://pengsongyou.github.io/nice-slam…...

cmake 配置Visual studio的调试命令
配置代码如截图: set_property(TARGET ${TARGET_NAME} PROPERTY VS_DEBUGGER_COMMAND "./consoleTest.exe") set_property(TARGET ${TARGET_NAME} PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "./config/labelDriver.cfg") set_propert…...

MPDIoU: A Loss for Efficient and Accurate Bounding BoxRegression--论文学习笔记
超越GIoU/DIoU/CIoU/EIoU MPDIoU让YOLOv7和YOLACT双双涨点 目标检测上的指标对比: 论文地址: [2307.07662] MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (arxiv.org) 摘要 边界框回归(Bounding Box Regression&am…...

【Uniapp 的APP热更新】
Uniapp 的APP热更新功能依赖于其打包工具 HBuilder,具体步骤如下: 1. 在 HBuilder 中构建并打包出应用程序 具体步骤: 1.点击发行,点击制作wgt包 2.根据需求修改文件储存路径和其他配置,点击确定 3.等待打包完成&a…...
MySQL主从复制配置
Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。 (1)首先确保主从服务器上的Mysql版本相同 (2)在主服务器上,创建一个充许从数据库来访问的用户slave,密码为:123456 ,然后使用REPLICATION SLAV…...

Linux - 添加普通用户为信任用户
1.添加用户 在Linux系统中,可以使用以下步骤添加用户: 打开终端并以root用户身份登录 输入以下命令以创建新用户(请将username替换为您想要创建的用户名): adduser username 设置该用户的密码,使用以下命…...
flask----路由系统
# 1 flask路由系统是基于装饰器的:参数如下 # 2 转换器: # 3 路由系统本质 # 4 endpoint 不传会怎么样,不传会以视图函数的名字作为值,但是如果加了装饰器,所有视图函数名字都是inner,就会出错,使用wrapp…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...