当前位置: 首页 > 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…...

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分&#xff0c;嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…...

Go语言入门:从零开始的快速指南(一)

文章目录 引言Go语言的诞生背景Go 语言的特性安装Go语言环境集成开发环境安装第一个Go程序Go 源代码的特征解读 引言 Go语言&#xff08;也称为Golang&#xff09;是一种开源的、静态类型的编程语言&#xff0c;由Google开发。它的设计目标是简单、高效、安全、并且易于学习和…...

Windows7+内网, 安装高版本nodejs,使用vite+vue3+typescript开发项目

前言&#xff1a;vite只支持高版本的nodejs&#xff0c;而高版本的nodejs只支持windows8及以上&#xff0c;且vite还对浏览器版本有兼容问题。以下均为vite官网截图 1、安装好低版本的nodejs win7系统建议安装13.及以下&#xff0c;我的是12.12.0这个版本。nodejs低版本官网下载…...

【C语言day14】

#include<stdio.h>int fun(char* s) {char* t s;while (*t);return(t - s); }int main() {char s[] "abc";int n fun(s);printf("%d\n", n);//4return 0; }循环在*t为0时停止&#xff0c;同时t&#xff0c;t最后会停在字符串结束的’\0’之后的一…...

暑假刷题第19天--8/1

170. 加成序列 - AcWing题库&#xff08;dfs迭代加深--重点理解&#xff09; #include<iostream> using namespace std; int n; int a[11]; int dfs(int x,int h){if(x>h1)return 0;if(a[x-1]n)return 1;bool st[130]{};for(int i1;i<x-1;i){for(int j1;j<i;j)…...

Java开发中的------修改密码+忘记密码

目录 1.修改密码 客户端响应 前端vue 后端 controller层 ServiceImpl实现层 2.忘记密码 客户端响应 后端 controller层 serviceImpl实现层 本章需要准备&#xff1a;springcloud项目&#xff0c;依赖&#xff0c;数据库.... 数据库SQL SET FOREIGN_KEY_CHECKS0;-- -…...

ffmpeg安装

简介 FFmpeg是一个开源的音视频处理库&#xff0c;它提供了一系列的工具和API&#xff0c;可以用于处理音视频文件。你可以使用FFmpeg的命令行工具来执行各种音视频处理操作&#xff0c;比如转码、剪辑、合并等。FFmpeg的命令格式通常是&#xff1a;ffmpeg [全局选项] {[输入文…...

Mac电脑目录

System&#xff08;系统&#xff09;Applications&#xff08;应用程序&#xff09;应用程序目录&#xff0c;默认所有的GUI应用程序都安装在这里User&#xff08;用户&#xff09;存放用户的个人资料和配置。每个用户有自己的单独目录Library&#xff08;资料库&#xff09;系…...

一起学算法(栈篇)

1.栈的概念 1.栈的定义 栈是仅限在表尾进行插入和删除的线性表&#xff0c;栈又被称为先进后出的线性表&#xff0c;简称“LIFO” 我们这次用数组作为我们栈的底层数据结构&#xff0c;代码会放到结尾供大家参考使用 2.栈顶的定义 栈是一个线性表&#xff0c;我们允许插入…...

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务&#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本&#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本&#xff1a;默认使用systemd作…...