LInux之例行工作
目录
场景
单一执行例行任务 --- at(一次性)
安装
命令详解
语法格式
参数及作用
时间格式
案例
at命令执行过程分析
循环执行的例行性任务--crontab(周期性)
crontd服务安装
linux 任务调度的工分类
crontab工作过程
crontab命令详解
语法格式
参数及作用
编辑crontab
特殊字符
案例 --- 编写脚本设置周期性任务
书写定时任务的注意事项
系统级别的计划任务
方法
案例
场景
-
生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。
-
在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。
-
但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪女朋友(new一个也行)。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。
-
at命令就是为这个需求而诞生的。使用at命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!
单一执行例行任务 --- at(一次性)
安装
at命令一般默认预装在操作系统中,可以通过下面的命令查看版本信息
[root@localhost ~]# at -V
![]()
查看执行状态
[root@localhost ~]# systemctl status atd
[root@localhost ~]# systemctl enable atd

命令详解
语法格式
at -参数 日期时间
参数及作用
| 参数 | 作用 |
| -m | 当任务完成后,发送邮件信息给用户 |
| -l | 列出系统的所有任务等价与atq |
| -d | 删除一个任务 |
| -v | 使用时间格式列出at任务 |
| -c | 可以列出任务后的命令内容 |
| -f | 从文件读取 |
时间格式
HH:MM --- 在今天HH小时的MM分钟后执行,若时间点错过,将在明天执行
HH:MM YYYY-MM-DD --- 在某年某月的某一天的特殊时间点执行该工作
now +2 minutes --- 从现在开始的时间向后推算(hours days weeks)
案例
案例1 --- 延迟执行ls /root ,并将结果写入文件at.txt中
[root@server ~]# at 11:05
warning: commands will be executed using /bin/sh
at> ls /root > at.txt
at> <EOT> --- 按下ctrl+d退出[root@localhost ~]# at -l --- 查看计划任务列表
[root@localhost ~]# atq --- 查看计划任务列表

案例2 --- 不使用交互性命令,通过管道符实现
[root@localhost ~]# echo "china" >> at.txt | at now +1 minut

注意:
at命令只要指定的时间正确,就可以执行对应的命令
at命令的输出结果不会显示到屏幕上
at命令中执行的命令最好使用绝对路径,不容易报错
过程:输入at 时间 -> 回车 ->输入执行的命令->ctrl+d退出at
at命令只会执行一次
at命令执行过程分析
-
第一步:寻找/etc/at.allow (白名单)是否存在,写在该文件中用户才可执行at命令
-
第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令
-
第三步:若两个文件都不存在则只有root用户可以使用at命令
注意:
若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中
案例 --- 设置某用户at命令不可用
[root@localhost ~]# useradd cel --- 新建用户 [root@localhost ~]# passwd cel --- 设置密码(123456)
[root@localhost ~]# tail -1 /etc/passwd --- 查看
[root@localhost ~]# vim /etc/at.deny --- 设置黑名单
[root@localhost ~]# su cel --- 切换用户 [cel@localhost root]$ at 20:08 --- 尝试执行at
循环执行的例行性任务--crontab(周期性)
crontd服务安装
-
at命令是在指定的时间只能执行一次任务,crontab命令可以循环重复的执行定时任务,与Windows 中的计划任务有些类似 -
crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的
[root@localhost ~]# yum install crontabs --- 安装
[root@localhost ~]# systemctl status crond --- 查看状态

注意:
crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务,crontab 命令需要 crond 服务支持
linux 任务调度的工分类
系统执行的工作 --- 系统周期性所要执行的工作,如备份系统数据、清理缓存
个人执行的工作 --- 某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
crontab工作过程
-
当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高
-
当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令
-
crontab 执行的每一项工作都会被记录到 /var/log/cron 这个日志文件中
-
当用户使用 crontab 新建工作之后,该项工作就会被记录到 /var/spool/cron/目录里面
crontab命令详解
语法格式
crontab [-u user] [-l| -r | -e]
参数及作用
| 参数 | 说明 |
|---|---|
| -u | 只有root才能执行该任务 |
| -e | ==编辑crontab工作内容== |
| -l | 查询crontab任务内容 |
| -r | 删除cronatb任务 |
编辑crontab
[root@localhost ~]# crontab -e
写入命令的格式 --- :每一行书写一个工作,每个工作有6个字段
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-7(0和7表示周日)
执行动作
特殊字符
* : 任意时刻
- : 表示时间范围
,(逗号): 分割时段
*/数字 : 指定时间间隔频率,如:每3分钟执行一次:*/3
案例
1 2 * * * : 每天凌晨2点1分执行动作0 17 * * 1 : 每周一下午17点整执行动作0 5 1,15 * * : 每月1号和15号凌晨5点执行动作40 4 * * 1-5 : 每周1到周5的凌晨4点40分执行动作*/10 4 * * * : 每天凌晨4点每隔10分钟执行动作3,15 8-11 */2 * * :每隔2天的上午8点到11点的第3分钟和第15分钟执行动作* * * * * : 每隔1分钟执行动作
案例 --- 编写脚本设置周期性任务
[root@localhost ~]# vim test.sh --- 编写脚本#!/bin/bashwhile :
doecho "this is my test sh"$(date) >> /root/cro.txtsleep 1
done

[root@localhost ~]# crontab -e --- 设置周期性执行任务
*/1 * * * * sh /root/test.sh

[root@localhost ~]# crontab -l --- 查看任务

[root@localhost ~]# cat cro.txt --- 查看结果

[root@localhost ~]# crontab -r --- 删除任务

注意:
需要还需要删除脚本
[root@localhost ~]# kill -9 pid --- 删除进程
书写定时任务的注意事项
-
6 个字段都不能为空,如果不确定则使用*表示任意时间
-
crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别
-
定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆
-
在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错
系统级别的计划任务
crontab -e 时每个用户都可以执行的命令,但有时定时任务必须由系统执行,此时就需要编辑/etc/crontab配置文件来实现
[root@localhost ~]# vim /etc/crontab
注意:
仅能通过root定义,不可以使用普通账户身份去执行计划任务
方法
在/etc/crontab 最后一行新增计划任务即可

解析:
SHELL=/bin/bash --- 指定系统使用哪个shell解释器去执行
PATH=/sbin:/bin:/usr/sbin:/usr/bin --- 系统执行命令的搜索路径
MAILTO=root --- 表示执行任务的信息通过邮件发送给谁
user-name --- 表示执行命令的用户是谁
案例
每天6:00点将日志文件/var/log/messages 文件备份到/backup目录中,备份后文件名称修改为logfileYYYY-MM-DD-HH:MM:SS
0 6 * * * root /bin/cp /var/log/messages /backup/logfile`date +\%Y-\%m-\%d-\%H:\%M:\%S`

注意:
反引号 --- 表示将引起的内容识别为命令
在cronatb中%表示换行,需要增加转义符\
相关文章:
LInux之例行工作
目录 场景 单一执行例行任务 --- at(一次性) 安装 命令详解 语法格式 参数及作用 时间格式 案例 at命令执行过程分析 循环执行的例行性任务--crontab(周期性) crontd服务安装 linux 任务调度的工分类 crontab工作过程…...
C++,从“hello world“开始
一、"hello world" #inclue <iostream>using namespace std;int main() {cout << "hello world" << endl;return 0; } 1.1 #include:预处理标识 1.2 <iostream>:输入输出流类所在头文件 1.2.1 istream&a…...
/root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘+ssh-rsa‘.
文章目录 1、问题2、查看openssh版本3、解决问题4、重新生成密钥5、查看是否可连接工蜂 1、问题 ssh访问工蜂报错: [rootlocalhost .ssh]# ssh -T gitgit.code.tencent.com /root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘ssh-rsa’. 2、查看o…...
mac m1上系统内录内部声音的方法/无需安装Blackhole
总所周知,m1的mac不能录制桌面音频,obsstudio都不行。 最快的解决方法就是下载飞书: 登陆后新建直播/视频会议: 共享的时候选择下面的两个钩上去就好了...
数字人学习目录
数字人学习目录 百度PaddlePaddleHub图像风格迁移模型pp-tinypose模型 PaddleGANPaddleLitePaddleDetectionPP-TinyPose 人体骨骼关键点识别 PaddleSpeechVisualDLPaddleBobo TransformerWav2LibCLIPFFMpeg模型库数据集学习天地PythonJupyter Notebook Unity3DUE 百度Paddle P…...
PHP 房产网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目
一、源码特点 PHP 房产网站系统是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88233553 论文 https://download…...
0基础入门代码审计-2 Fortify初探
0x01 序言 目前又加入一位新童鞋了,最近将会再加入cs相关的专栏,都是以基础为主,毕竟太复杂的东西,能看懂的人太少。 0x02 准备工具 1、Fortify 2、需要审计的源码 0x03 Fortify的简单使用 1、 1、在开始菜单栏中找到Audit Wo…...
qiiuzhiji4
本篇是从慧与离职后到2023年8月21日这段时间的经历 2023/7/31至2023/8/21 本篇初次写于2023年8月21日 从慧与离职后基本上就是在专心找工作了,但是有在这段时间找工作经历的人都明白,IT行业不复以往了。尤其是对于我这样的普通二本学历的人来说ÿ…...
构建 NodeJS 影院微服务并使用 docker 部署【01/4】
图片来自谷歌 — 封面由我制作 一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 在本系列中,我们将构建一个 NodeJS 微服务,并使用…...
变频器和plc之间无线MODBUS通讯
在工业现场由PLC远程控制变频器的应用非常常见,如果挖沟布线不便或者变频器在移动设备上,那么采用无线通讯就是最佳方案。 这里我们选用最常用的三菱 FX2N PLC和三菱变频器为例,并结合日系plc专用无线通讯终端DTD435M来说明PLC与变频器之间的…...
【云原生】3分钟快速在Kubernetes1.25部署Prometheus2.42+Grafana9.5.1+Alertmanager0.25
文章目录 1、简介2、GitHub地址3、环境信息4、安装5、访问Grafana1、简介 Prometheus-operator帮助我们快速创建Prometheus+Grafana+Alertmanager等服务,而kube-prometheus更加完整的帮助我们搭建全套监控体系,这包括部署多个 Prometheus 和 Alertmanager 实例, 指标导出器…...
Redis中常见的缓存穿透、缓存击穿、缓存雪崩、缓存预热解决方案
文章目录 一、缓存穿透1. 什么是缓存穿透2. 解决方案2.1 无效的key存放到Redis2.2 引入布隆过滤器2.3 如何选择: 二、缓存击穿1. 什么是缓存击穿2. 解决方案 三、缓存雪崩1. 什么是缓存雪崩2. 解决方案2.1 均匀过期2.2 热点数据缓存永远不过期2.3 采取限流降级的策略…...
第二章-自动驾驶卡车-自动驾驶卡车前装量产的要求
1、自动驾驶卡车的特点与挑战 重卡主要运行在相对封闭的高速公路,相较城市道路场景看似更简单。但是,由于重卡特有的物理特性、运行环境和商业运营要求,相较于乘用车的自动驾驶系统,重卡的自动驾驶系统对车辆的感知距离和精度、系…...
Midjourney API 申请及使用
Midjourney API 申请及使用 在人工智能绘图领域,想必大家听说过 Midjourney 的大名吧! Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作,只要简单输入绘图指令,这个神奇的工具就能在瞬间为我们呈现出对应的图…...
mysql mysql 容器 忽略大小写配置
首先能够连接上mysql,然后输入下面这个命令查看mysql是否忽略大小写 show global variables like %lower_case%; lower_case_table_names 0:不忽略大小写 lower_case_table_names 1:忽略大小写 mysql安装分为两种(根据自己的my…...
第58步 深度学习图像识别:Transformer可视化(Pytorch)
一、写在前面 (1)pytorch_grad_cam库 这一期补上基于基于Transformer框架可视化的教程和代码,使用的是pytorch_grad_cam库,以Bottleneck Transformer模型为例。 (2)算法分类 pytorch_grad_cam库中包含的…...
angular实现全局组件
之前我们实现全局组件的第一种方式。我们是在定义了组件的时候通过在declares:[component],然后exports出该组件。最后在页面中每次导入该组件,而这次我们将采用另一种方式来实现 1 新建公用组件: navbreadcrumbnavbreadcrumb.component.htmlnavbreadc…...
Spring编程模型(范式)
面向对象编程 契约接口:Aware aware:意识到的 契约接口(Aware)是Spring框架中的一个特性,它允许Bean对象意识到它们所在的环境并与之进行交互,用于提供特定的功能或信息给Bean对象。这些接口通常作为回调接口,在Bean初始化过程…...
Golang GORM 单表删除
删除只有一个操作,delete。也是先找到再去删除。 可以删除单条记录,也可以删除多条记录。 var s Studentdb.Debug().Delete(&s, "age ?", 100)fmt.Println(s)[15.878ms] [rows:1] DELETE FROM student WHERE age 100var s Studentdb.De…...
Windows 下 MySQL 源码学习环境搭建步骤【建议收藏】
【建议收藏】Windows 下如何安装最新版 MySQL 源码学习的调试环境步骤。 作者:芬达 《芬达的数据库学习笔记》公众号作者,开源爱好者,擅长 MySQL、ansible。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...






