《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.rhkb.cn/news/438531.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot平台:古典舞爱好者的在线聚集地

第三章 系统分析 3.1 可行性分析 需要使用大部分精力开发的古典舞在线交流平台为了充分降低开发风险,特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度,经济角度,还有操作角度等进行综合阐述。 3.1.1技术可行…

OpenFeign微服务部署

一.开启nacos 和redis 1.查看nacos和redis是否启动 docker ps2.查看是否安装nacos和redis docker ps -a3.启动nacos和redis docker start nacos docker start redis-6379 docker ps 二.使用SpringSession共享例子 这里的两个例子在我的一个博客有创建过程&#xff0c…

netty之Netty与SpringBoot整合

前言 在实际的开发中,我们需要对netty服务进行更多的操作,包括;获取它的状态信息、启动/停止、对客户端用户强制下线等等,为此我们需要把netty服务加入到web系统中。 MyChannelInitializer public class MyChannelInitializer ex…

【Android 源码分析】Activity生命周期之onDestroy

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

python爬虫 - 初识爬虫

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 (一)HTTP请求与响应 &#xff0…

Discord:报错:A fatal Javascript error occured(解决办法)

按 Windows 键 R 并输入 %appdata% 选择 discord 文件夹并将其删除。 再次按 Windows 键 R 并输入 %LocalAppData% 选择 discord 文件夹并再次将其删除。 附加: 如果还不行,就通过官网下载吧,这个问题通过epic下载可能会有

TypeScript 第三部分 扩展

1. 声明文件 主要作用: 类型声明:为库或模块提供类型信息。全局声明:为全局作用域中的类型和变量提供声明。类型兼容性:确保第三方库或自定义代码的类型正确性。代码提示与检查:在开发环境中提供更好的代码提示和类型…

关于深度学习torch的环境配置问题

已经下好了torch在虚拟环境中,结果在ipynb文件中无法运行 后来在终端直接用python语句编译 发现没有问题 在编辑测试py文件 发现runcode有问题 原来是插件默认base环境 具体操作参考VS Code插件Code Runner使用python虚拟环境_coderunner怎么在虚拟环境中使用-CSD…

11. 异步编程

计算机的核心部分,即执行构成我们程序的各个步骤的部分,称为处理器。我们迄今为止看到的程序都会让处理器忙个不停,直到它们完成工作。像操作数字的循环这样的程序的执行速度几乎完全取决于计算机处理器和内存的速度。但是,许多程…

微服务nginx解析部署使用全流程

目录 1、nginx介绍 1、简介 2、反向代理 3、负载均衡 2、安装nginx 1、下载nginx 2、解压nginx安装包 3、安装nginx​编辑 1、执行configure命令 2、执行make命令 4、启动nginx 1、查找nginx位置并启动 2、常用命令 3、反向代理 1、介绍反向代理配置 1、基础配置…

Windows上面搭建Flutter Android运行环境

Windows 上面搭建 Flutter Android 运 行环境(适用于 Flutter3.7.3之后的版本)。 提示: Flutter3.7.x 之前的版本配置请参考教程,或者参考文档《 Flutter Android 开发环境搭建,适用于 Flutter3.3.10之前的版本》。 …

MySQL-SQL(DDL、DML、DQL、DCL)

一、 MySQL启动: MySQL客户端连接: 二、SQL 1.SQL通用语法 (1) SQL语句可以单行或多行书写,以分号结尾。 (2) SQL语句可以使用空格/缩进来增强语句的可读性。 (3) MySQL数据库的SQL语句不区分大小写,关键字建议使…

宣城自闭症咨询寄宿学校:为家庭提供专业支持

宣城与广州的自闭症教育探索:星贝育园为家庭提供专业支持 在自闭症儿童教育的广阔领域中,寄宿学校作为一种特殊而重要的教育模式,正逐渐展现出其独特的价值和意义。虽然本文标题提及了宣城的自闭症咨询寄宿学校,但我们的焦点将转…

UE4_Niagara基础实例—4、静态网格体表面生成粒子

效果图: 分析:在物体面上生成粒子,改变粒子的不透明度,让粒子收到力,并添加紊乱,类似于水蒸气。 操作步骤: 1、创建个niagara 系统,使用模版 simple sprite burst。简单调节参数。…

【算法】链表:160.相交链表(easy)+双指针

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法(双指针) 返回结果 算法正确性 时间复杂度 4、代码 1、题目链接 160. 相交链表 - 力扣(LeetCode) 2、题目介绍 ​ 3、解法(…

[C#]C# winform部署yolov11目标检测的onnx模型

yolov11官方框架:https://github.com/ultralytics/ultralytics 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.2 【效果展示】 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel;…

安卓真机调试“no target device found“以及“ INSTALL_FAILED_USER_RESTRICTED“两个问题的解决办法

目录 1 no target device found问题解决办法 2 “INSTALL_FAILED_USER_RESTRICTED”解决办法 使用android studio 2023.2.1.23windows版本。手机为小米K70 Pro 1 no target device found问题解决办法 参考小米手机如何开启usb调试功能? (baidu.com) 1 联接手机…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。但远程文件包含漏洞的利用条件较为苛刻;因此,在web应用系统的功能设计上尽量不要让前端用户直接传变…

Pikachu-Sql-Inject -基于boolian的盲注

基于boolean的盲注: 1、没有报错信息显示; 2、不管是正确的输入,还是错误的输入,都只显示两种情况,true or false; 3、在正确的输入下,输入and 1 1/and 1 2发现可以判断; 布尔盲注常用函数&…

【论文笔记】Visual Instruction Tuning

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Instruction Tunin…