《Linux从小白到高手》理论篇:深入理解Linux的计划任务/定时任务

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的计划任务/定时计划。

Linux的计划任务

在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,重启,备份之类的操作,都可以使用计划任务来完成,这样可以大大降低管理员的工作量,而且可靠度更好。
在这里插入图片描述
linux系统支持一些能够自动执行任务的服务,称之为计划任务。 在 Linux 中主要有以下几种计划任务类型:
1、cron 定时任务
系统级 cron 任务
–通常由系统管理员设置,用于执行系统维护任务,如备份数据库、清理临时文件等。
–系统级 cron 任务的配置文件通常位于 /etc/crontab 以及 /etc/cron.d/ 目录下的文件。
–这些任务以特定的用户身份(如 root)运行,以确保有足够的权限执行系统级操作。
用户级 cron 任务
–普通用户可以设置自己的 cron 任务,用于执行个人的自动化任务,如定时备份个人文件、运行特定的脚本等。
–用户可以使用 crontab -e 命令来编辑自己的 cron 任务列表。
2、at 定时任务
一次性定时任务
–at 命令用于安排一次性的任务在特定的时间执行。
–你可以指定具体的时间点,如 “明天上午 10 点” 或 “晚上 8 点 30 分” 等。
–任务执行完毕后,不会再次自动执行,适用于只需要执行一次的特定任务。
3、anacron 定时任务
适用于非连续运行系统
–如果系统不是一直处于运行状态,比如笔记本电脑可能会经常关机,anacron 就很有用。
–它会在系统启动后检查上次执行任务的时间,如果超过了指定的时间间隔,就会执行相应的任务。
–通常用于那些不需要在特定时间点严格执行的任务,如每日的日志清理或软件更新检查等。
4、守护进程的定时任务
特定服务的定时操作
–一些守护进程本身具有定时任务功能。
–例如,日志轮转工具(logrotate)通常作为一个守护进程运行,它会定期(如每天、每周)对系统日志进行轮转和压缩,以防止日志文件过大。
–数据库管理系统也可能有自己的定时任务,如自动备份数据库、清理过期数据等。

计划任务的使用场合

1、系统管理
备份重要数据
–可以定期(如每天、每周)对关键数据进行备份,确保在系统故障或数据丢失时能够快速恢复。–例如,使用备份工具对数据库、文件服务器中的重要文件进行自动备份。
–对于企业级系统,数据的安全性至关重要,计划任务可以确保备份按时进行,减少人工操作的失误和不确定性。
清理临时文件和日志
–随着系统的运行,会产生大量的临时文件和日志文件。定期清理这些文件可以释放磁盘空间,提高系统性能。
–例如,每天凌晨对 /tmp 目录下的临时文件进行清理,每周对系统日志文件进行归档和压缩,保留一定时间范围内的日志以便查询,同时删除旧的日志文件。
系统更新和维护
–可以设置计划任务在特定时间自动检查系统更新,并在合适的时候进行安装。这可以确保系统始终保持最新的安全补丁和功能改进。
–对于服务器系统,还可以定期进行硬件检查、磁盘检查等维护操作,以提前发现潜在的问题并进行处理。
2、软件开发和部署
自动构建和测试
–在软件开发过程中,可以使用计划任务自动触发代码构建和测试流程。例如,每小时从代码仓库拉取最新代码,进行自动构建和单元测试。
–可以及时发现代码中的问题,提高开发效率,同时确保代码的质量和稳定性。
部署应用程序
–对于持续集成 / 持续部署(CI/CD)流程,可以设置计划任务在特定条件下自动部署应用程序。–例如,当代码通过所有测试后,自动将应用程序部署到生产环境。
–可以实现快速的应用程序更新和迭代,减少人工部署的时间和错误。
3、业务流程自动化
定时发送报告
–在企业中,经常需要定期生成和发送各种报告,如销售报表、财务报表等。可以使用计划任务自动生成报告,并通过邮件或其他方式发送给相关人员。
–例如,每月第一天自动生成上月的销售报告,并发送给销售团队和管理层。
数据采集和处理
–对于需要定期采集和处理数据的业务场景,计划任务可以自动执行数据采集和处理流程。例如,每天从外部数据源获取数据,进行清洗和分析,然后将结果存储到数据库中供后续使用。
–可以确保数据的及时性和准确性,为业务决策提供可靠的支持。
4、个性化服务
定时提醒
–可以使用计划任务设置定时提醒,如提醒自己参加会议、完成任务等。例如,使用命令行工具或脚本结合通知服务,在特定时间弹出提醒窗口或发送邮件提醒。
自动同步文件
–如果你有多个设备,并且需要保持文件的同步,可以使用计划任务自动执行文件同步操作。例如,每天晚上自动将笔记本电脑上的重要文件同步到云存储或外部硬盘中。
–可以确保你的文件始终安全备份,并且在不同设备之间保持一致。

计划任务的常用部署

1、使用 cron 部署定时计划任务
编辑 cron 任务表
–以普通用户身份执行 crontab -e 命令,这会打开一个文本编辑器,通常是 vi 或 nano,具体取决于系统配置。
–在编辑器中,按照 cron 的格式输入任务。例如,要每天凌晨 2 点执行一个名为 /path/to/script.sh 的脚本,可以输入:0 2 * * * /path/to/script.sh,保存并退出
*–执行 crontab -l 命令可以查看当前用户的 cron 任务列表,确认刚才添加的任务是否正确显示。
系统级 cron 任务部署(不常用到):
–如果需要设置系统级的 cron 任务,管理员可以编辑 /etc/crontab 文件或者在 /etc/cron.d/ 目录下创建新的文件。
–系统级任务的格式与用户级任务类似,但需要指定任务执行的用户。例如:

0 3 * * * root** /path/to/system_script.sh,

表示每天凌晨 3 点以 root 用户身份执行 /path/to/system_script.sh 脚本。
2、使用 at 部署一次性定时计划任务
安排任务
执行 at time 命令,其中 time 是任务执行的时间。例如,at 10:30 tomorrow 表示在明天上午 10 点 30 分执行任务。
然后在命令提示符下输入要执行的命令或脚本。例如:/path/to/script.sh。
按下 Ctrl+D 结束输入。
查看任务队列
执行 atq 命令可以查看当前系统中的 at 任务队列,确认任务是否成功添加。
删除任务
如果需要删除一个 at 任务,可以执行 atrm job_number,其中 job_number 是任务的编号,可以通过 atq 命令查看。
3、注意事项
权限问题
–确保任务中执行的脚本或命令具有足够的权限。如果需要以特定用户身份执行任务,可以在 cron 任务或 at 任务中指定用户。
–对于系统级任务,管理员需要谨慎设置权限,以防止安全漏洞。
脚本和命令的正确性
–在添加任务之前,最好先手动测试要执行的脚本或命令,确保其能够正确运行并产生预期的结果。注意脚本中的路径是否正确,以及是否依赖于特定的环境变量。
日志记录
–为了便于排查问题,可以在脚本或命令中添加日志记录功能,将任务的执行情况记录到文件中。这样,在任务出现问题时,可以通过查看日志来确定原因。
系统稳定性
–大量的定时任务可能会对系统性能产生影响。在部署定时任务时,要考虑系统的负载情况,避免在系统繁忙时执行耗时较长的任务。

Linux计划任务的时间设置格式

1、cron 计划任务的时间格式
cron 任务的时间格式由五个字段组成,分别表示分钟、小时、日、月、星期。每个字段可以使用以下几种方式进行设置:
具体值
直接指定一个具体的数字,例如 “5” 表示在该字段对应的时间单位上的第 5 个单位执行任务。比如,“5 3 * * *” 表示每天凌晨 3 点 5 分执行任务。
范围
使用一个范围表示多个值,例如 “1-5” 表示在该字段对应的时间单位上的第 1 到第 5 个单位执行任务。比如,“0 1-5 * * ” 表示每天凌晨 1 点到 5 点的每分钟执行任务。
步长值
使用 “/” 和一个数字表示步长,例如 “/5” 表示每隔 5 个单位执行任务。比如,“/5 * * * ” 表示每 5 分钟执行一次任务。
通配符 “

表示所有可能的值。例如,“
* * * *” 表示每分钟执行任务。
举例:

//每天早上5点清空/tmp目录下的所有文件:
0 5 * * * /bin/rm -rf /tmp/*
//每周日午夜执行/etc/scripts/backup.sh脚本进行数据备份:
0 0 * * 0 /etc/scripts/backup.sh
//每小时的第15分钟查看系统负载情况(使用uptime命令)并将结果记录到/var/log/load.log文件:
15 * * * * /usr/bin/uptime >> /var/log/load.log 2>&1
//每天晚上11点到早上7点之间,每隔2小时清理/home目录下的临时文件:
0 23-7/2 * * * /bin/find /home -type f -name "*.tmp" -exec rm -f {} \;

2、at 定时任务的时间设置
at 任务可以使用更直观的时间描述方式,例如:
具体时间
“10:30 tomorrow” 表示在明天上午 10 点 30 分执行任务。
“8pm next Friday” 表示在下周五晚上 8 点执行任务。
相对时间
“now + 2 hours” 表示从现在起 2 小时后执行任务。
“5 minutes from now” 表示从现在起 5 分钟后执行任务。

Linux计划任务常用命令(很少)

1、cron 相关命令
crontab -e:
–用于编辑当前用户的 cron 任务表。打开一个文本编辑器,用户可以在其中添加、修改或删除 cron 任务。
–例如:crontab -e后,可以添加一行 “0 2 * * * /path/to/backup_script.sh” 来设置每天凌晨 2 点执行备份脚本。
crontab -l:
–列出当前用户的 cron 任务表。可以查看已设置的任务,确认任务是否正确配置。
–执行该命令后,会显示当前用户的所有 cron 任务,包括任务的执行时间和要执行的命令。
crontab -r:
–删除当前用户的所有 cron 任务。谨慎使用此命令,因为它会立即删除所有任务,且不可恢复。
例如:如果想要清空当前用户的 cron 任务,可以执行crontab -r。
2、at 相关命令
at time:
–安排一次性的任务在指定时间执行。其中time可以是具体的时间点描述,如 “tomorrow 10:30” 表示明天上午 10 点 30 分。
–执行该命令后,会进入一个输入模式,可以输入要执行的命令或脚本。输入完成后,按下Ctrl+D结束输入。
atq:
–查看当前系统中的 at 任务队列。显示已安排但尚未执行的一次性任务列表。
列表中会显示任务的编号、执行时间和执行的用户等信息。
atrm job_number:
–删除指定编号的 at 任务。其中job_number是通过atq命令查看到的任务编号。
–例如:如果要删除编号为 5 的 at 任务,可以执行atrm 5。

一些数据库或编程语言本身自带定时任务执行能力,结合Linux计划任务来实现更细粒度时间的任务控制和触发,在此不再赘述。

本篇完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,家人们的点赞和关注是我笔耕不辍的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/888554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解Java中的BIO、NIO、AIO

1、 详解Java中的BIO、AIO、NIO 1.1、引言 IO流是Java中比较难理解的一个知识点,但是IO流在实际的开发场景中经常会使用到,比如Dubbo底层就是NIO进行通讯。本文将介绍Java发展过程中出现的三种IO:BIO、NIO以及AIO,重点介绍NIO。…

读数据工程之道:设计和构建健壮的数据系统03数据工程生命周期(上)

1. 数据工程生命周期 1.1. 数据领域正在经历新数据技术和实践的爆炸式增长,抽象程度和易用性不断提高 1.2. 由于技术抽象程度的增加,数据工程师将越来越多地成为数据生命周期工程师,根据数据生命周期管理的原则来进行思考和操作 1.3. 数据…

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结

目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值(medi…

yub‘s Algorithmic Adventures_Day7

环形链表 link:https://leetcode.cn/problems/linked-list-cycle-ii/description/ 思路分析 我只能说双指针yyds【刻板hh】 我们分两种情况来分析 起码在第二圈才会相遇 fast比slow多走环的整数倍 fast 走的步数是 slow 步数的 2 倍,即 f2s&#xff…

计算机的错误计算(一百一十七)

摘要 算式“(5^25*(1/25)^(1/5)*3^25(1/25)^(1/5)*5^25*3^(251/5)-(9/25)^(1/5)*3^25*5^25-(1/25)^(1/5)*3^25*5.0^25*(13^(1/5)-3^(2/5.0)))” 的准确值是0. 但是,Python 与 Excel 均输出了错误结果:一个含有15位整数,一个含有14位整数。 …

Python | Leetcode Python题解之第464题我能赢吗

题目: 题解: class Solution:def canIWin(self, maxChoosableInteger: int, desiredTotal: int) -> bool:cachedef dfs(usedNumbers: int, currentTotal: int) -> bool:for i in range(maxChoosableInteger):if (usedNumbers >> i) & 1…

初学者如何快速入门人工智能

一、引言 人工智能(Artificial Intelligence,简称AI),作为当今科技领域极具前景与影响力的方向之一,吸引着众多人士投身其中。无论是对科技充满好奇的学生,还是意图拓展职业发展路径的职场人士&#xff0c…

网络知识_001_浏览器输入域名

文章目录 网络模型IP地址,子网掩码,网关,网络地址,广播地址,NAT转换浏览器输入域名到网页打开发生了什么DNS获取顺序 网络模型 模型协议工具报文添加信息作用应用层http,https,ftp,…

认识动态规划算法和实践(java)

前言 动态规划算法里面最有意思的一个东西之一。动态规划初学肯定会有一定晦涩难懂。如果我们去网上搜索,动态规划的资料,它一开始都是将很多的理论,导致会认为很难,但是这个东西实际上是有套路的。 动态规划的英语是Dynamic Pr…

Java爬虫技术:解锁1688商品搜索的新维度

Java爬虫技术简介 Java爬虫技术是指使用Java语言编写的程序,模拟浏览器行为,自动化地从互联网上获取信息。随着技术的发展,Java爬虫技术已经非常成熟,有多种框架和库可以使用,如Jsoup、HttpClient、WebMagic等。 1688…

【操作系统】引导(Boot)电脑的奇妙开机过程

🌹😊🌹博客主页:【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见:【C语言专项】 目录 什么是操作系统的引导? 操作系统的引导(开机过程) Windows操作系…

【2024最新】华为HCIE认证考试流程

HCIE是华为认证体系中最高级别的ICT技术认证,表示通过认证的人具有ICT领域专业知识和丰富实践经验。 HCIE认证方向:最高认证级别HCIE的技术方向有13个 下面以HCIE-Datacom为例给大家介绍一下: HCIE-Datacom认证考试流程: 1.笔试…

ecmascript标准

ECMAScript(简称ES)是由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)制定的一种标准化的脚本程序设计语言。它是JavaScript的核心,定义了语言的语法、类型、语句、关…

Stable Diffusion最新版nowebui的api使用详解

最近在使用stable diffusion最新版的Stable Diffusion WebUI Forge进行api调用,下面来一步一步的进行展开吧!!! 1、下载lllyasviel/stable-diffusion-webui-forge GitHub - lllyasviel/stable-diffusion-webui-forgeContribute to lllyasviel/stable-diffusion-webui-for…

医院管理智能化:Spring Boot技术革新

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言,Spring Boot框…

C++——类和对象(二)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不…

探索杨辉三角形的奥秘:C#实现

文章目录 杨辉三角形简介特点 C#实现杨辉三角形环境准备代码实现代码解释1. 用户输入2. 输入验证3. 初始化第一行4. 生成杨辉三角形5. 打印杨辉三角形 结论 杨辉三角形,也被称为帕斯卡三角形,是一个历史悠久且充满数学魅力的数字模式。它不仅在数学领域有…

裸眼3D巨幕视频演示Pr城市广告显示屏样机模板

震撼大气超强视觉冲击力3D城市数字广告牌视频演示pr模板工程文件。 5个城市街景裸眼3D巨幕户外广告显示屏样机模板。每个场景提供2个不同的相机视图。 下载地址:https://prmuban.com/40595.html

泡沫背后:人工智能的虚幻与现实

人工智能的盛世与泡沫 现今,人工智能热潮席卷科技行业,投资者、创业者和用户都被其光环吸引。然而,深入探讨这种现象,人工智能的泡沫正在形成,乃至具备崩溃的潜质。我们看到的,无非是一场由资本推动的狂欢…

OCP迎来新版本,让OceanBase的运维管理更高效

近期,OceanBase的OCP发布了新版本,全面支持 OceanBase 内核 4.3.2 及更低版本。新版本针对基础运维、性能监控、运维配置、外部集成等多个方面实现了 20余项的优化及强化措施,增强产品的易用性和稳定性,从而帮助用户更加高效地管理…