当前位置: 首页 > news >正文

【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,每行代表一个定时任务,由五个或六个字段组成,分别表示分钟、小时、日期、月份、星期和要执行的命令。

  1. 指定时间点执行任务
# 每天的12点30分执行backup.sh脚本
30 12 * * * /path/to/backup.sh

上述例子中,任务将在每天的12点30分执行指定路径下的backup.sh脚本。

  1. 指定时间间隔执行任务
# 每小时执行一次cleanup.sh脚本
0 * * * * /path/to/cleanup.sh

上述例子中,任务将每小时执行一次指定路径下的cleanup.sh脚本。

  1. 使用通配符
# 每天的0点到5点,每隔30分钟执行一次job.sh脚本
*/30 0-5 * * * /path/to/job.sh

上述例子中,任务将在每天的0点到5点之间,每隔30分钟执行一次指定路径下的job.sh脚本。

  1. 使用特殊字符
# 每月的最后一天执行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命令将命令或脚本提交到系统中,并指定具体的执行时间。

  1. 指定时间点执行任务
# 在当前时间的10分钟后执行backup.sh脚本
at now + 10 minutes
at> /path/to/backup.sh
at> Ctrl+D

上述例子中,任务将在当前时间的10分钟后执行指定路径下的backup.sh脚本。在输入at命令后,系统会进入at命令的交互模式,用户需要在at>提示符下输入要执行的命令或脚本,并使用Ctrl+D结束输入。

  1. 指定具体时间执行任务
# 在指定的日期和时间执行job.sh脚本
at 12:00 PM July 1
at> /path/to/job.sh
at> Ctrl+D

上述例子中,任务将在指定的日期和时间(12:00 PM July 1)执行指定路径下的job.sh脚本。

  1. 列出已提交的at任务
at -l

上述命令将列出当前用户已提交的at任务,包括任务的编号、执行时间和任务内容。

  1. 删除已提交的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操作系统中&#xff0c;定时任务调度是一项重要的功能&#xff0c;它可以让用户在指定的时间或周期性地执行特定的任务。这种机制使得用户能够自动化地执行一些重复性工作&#xff0c;提高工作效率。本文将详细介绍Linux定时任务调度的原理、常用指令和代码示例&#xf…...

动手学深度学习(一)预备知识

目录 一、数据操作 1. N维数组样例 2. 访问元素 3. 基础函数 &#xff08;1&#xff09; 创建一个行向量 &#xff08;2&#xff09;通过张量的shape属性来访问张量的形状和元素总数 &#xff08;3&#xff09;reshape()函数 &#xff08;4&#xff09;创建全0、全1、…...

item_get-KS-获取商品详情

一、接口参数说明&#xff1a; item_get-根据ID取商品详情 &#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/ks/item_get 名称类型必须描述keyString是调用key&#xff08;http://o0b.cn/…...

[华为OD] 最小传输时延(dijkstra算法)

明天就要面试了我也太紧张了吧 但是终于找到了一个比较好理解的dijkstra的python解法&#xff0c;让我快点把它背下来&#xff01;&#xff01;&#xff01;&#xff01; 文章目录 题目dijkstra算法的python实现python解答dfs解法dijkstra解法 题目 先把题目放出来 某通信网络…...

问道管理:总资产大于总市值好吗?

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

IBM Spectrum LSF (“LSF“ ,简称为负载共享设施) 用户案例

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

Pytorch深度学习-----神经网络之非线性激活的使用(ReLu、Sigmoid)

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用&#xff08;ToTensor&#xff0c;Normalize&#xff0c;Resize &#xff0c;Co…...

Gis入门,使用起止点和两个控制点生成三阶贝塞尔曲线(共四个控制点,线段转曲线)

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

Web-7-深入理解Cookie与Session:实现用户跟踪和数据存储

深入理解Cookie与Session&#xff1a;实现用户跟踪和数据存储 今日目标 1.掌握客户端会话跟踪技术Cookie 2.掌握服务端会话跟踪技术Sesssion 1.会话跟踪技术介绍 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断…...

Springboot设置Https

1、修改配置文件application.yml&#xff0c;并将*.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二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它是由微软与Canonical公司合作开发&#xff0c;其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机&#…...

中级课程——弱口令(认证崩溃)

文章目录 什么是弱口令密码生成器分类暴力破解万能密码测试环境工具 什么是弱口令 密码生成器 分类 暴力破解 万能密码 or true --测试环境 工具 九头蛇&#xff0c;超级弱口令爆破工具&#xff0c;bp&#xff0c;...

web自动化测试进阶篇05 ——— 界面交互场景测试

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…...

NICE-SLAM: Neural Implicit Scalable Encoding for SLAM论文阅读

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

cmake 配置Visual studio的调试命令

配置代码如截图&#xff1a; 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双双涨点 目标检测上的指标对比&#xff1a; 论文地址&#xff1a; [2307.07662] MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (arxiv.org) 摘要 边界框回归&#xff08;Bounding Box Regression&am…...

【Uniapp 的APP热更新】

Uniapp 的APP热更新功能依赖于其打包工具 HBuilder&#xff0c;具体步骤如下&#xff1a; 1. 在 HBuilder 中构建并打包出应用程序 具体步骤&#xff1a; 1.点击发行&#xff0c;点击制作wgt包 2.根据需求修改文件储存路径和其他配置&#xff0c;点击确定 3.等待打包完成&a…...

MySQL主从复制配置

Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。 (1)首先确保主从服务器上的Mysql版本相同 (2)在主服务器上,创建一个充许从数据库来访问的用户slave,密码为:123456 ,然后使用REPLICATION SLAV…...

Linux - 添加普通用户为信任用户

1.添加用户 在Linux系统中&#xff0c;可以使用以下步骤添加用户&#xff1a; 打开终端并以root用户身份登录 输入以下命令以创建新用户&#xff08;请将username替换为您想要创建的用户名&#xff09;&#xff1a; adduser username 设置该用户的密码&#xff0c;使用以下命…...

flask----路由系统

# 1 flask路由系统是基于装饰器的&#xff1a;参数如下 # 2 转换器&#xff1a; # 3 路由系统本质 # 4 endpoint 不传会怎么样,不传会以视图函数的名字作为值&#xff0c;但是如果加了装饰器&#xff0c;所有视图函数名字都是inner&#xff0c;就会出错&#xff0c;使用wrapp…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...