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。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不…...
redis总复习
springboot基于redisson实现看门狗锁:Springboot基于Redisson实现Redis分布式可重入锁【案例到源码分析】_springboot redission lock_AP0906424的博客-CSDN博客 springboot基于redis实现设置缓存和过期时间的代码?包括key的设计 https://mbd.baidu.com/ug_share…...
[LeetCode - Python]844. 比较;含退格的字符串(Easy);415. 字符串相加(Easy)
1.题目 844. 比较含退格的字符串(Easy) 1.代码: class Solution:def backspaceCompare(self, s: str, t: str) -> bool:# 暴力法s list(s)t list(t)M 0N 0for i in range(len(s)):i -M if s[i] # :if i > 0 :s.pop(i)s.pop(i-…...
机器学习深度学习——NLP实战(自然语言推断——注意力机制实现)
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——NLP实战(自然语言推断——数据集) 📚订阅专栏:机器学习&…...
mac垃圾清理软件有哪些
随着使用时间的增加,mac系统会产生一些垃圾文件,影响系统的性能和稳定性。为了保持mac系统的高效,用户需要定期使用mac垃圾清理软件来清理系统缓存、日志、语言包等无用文件。CleanMyMac是一款功能强大的mac垃圾清理软件,它可以帮…...
8.18 校招 内推 面经
绿泡泡: neituijunsir 交流裙,内推/实习/校招汇总表格 1、校招 | 小米集团2024届全球校园招聘正式启动(内推) 校招 | 小米集团2024届全球校园招聘正式启动(内推) 2、2023校招总结--软件测试岗位 - 2 2…...
docker的web管理平台docker.ui
docker.ui安装 docker run --name docker.ui \ -p 8999:8999 \ --restartalways \ -v /var/run/docker.sock:/var/run/docker.sock \ -d joinsunsoft/docker.ui参数说明: docker run:启动container–name:容器命名–restartalwaysÿ…...
20230822 Windows上使用find_package引入OpenCV报错
报错信息 打开Cmake项目时,find_package 报错: Found OpenCV Windows Pack but it has no binaries compatible with yourconfiguration.You should manually point CMake variable OpenCV_DIR to your build of OpenCVlibrary.原因 大概率原项目是在 …...
MySQL下载安装配置
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
3D WEB轻量化引擎HOOPS产品助力NAPA打造船舶设计软件平台
NAPA(Naval Architectural PAckage,船舶建筑包),来自芬兰的船舶设计软件供应商,致力于提供世界领先的船舶设计、安全及运营的解决方案和数据分析服务。NAPA拥有超过30年的船舶设计经验,年营业额超过2560万欧…...
lesson9: C++多线程
1.线程库 1.1 thread类的简单介绍 C11 中引入了对 线程的支持 了,使得 C 在 并行编程时 不需要依赖第三方库 而且在原子操作中还引入了 原子类 的概念。要使用标准库中的线程,必须包含 < thread > 头文件 函数名 功能 thread() 构造一个线程对象…...
制作网站需要多少时间/天津做网站的网络公司
想过来写点日记的。。 现在发现博客也蛮好的。 有时候很想倾诉一下东西,而博客就给了平台 那些倾诉的,不想任何人知道。 一个陌生的平台,陌生的写着。转载于:https://blog.51cto.com/jinxin/981384...
wordpress自定义内容管理/天眼查企业查询
Zookeeper的目录整理如下 1. 【分布式】分布式架构 2. 【分布式】一致性协议 3. 【分布式】Chubby与Paxos 4. 【分布式】Zookeeper与Paxos 5. 【分布式】Zookeeper使用--命令行 6. 【分布式】Zookeeper使用--Java API 7. 【分布式】Zookeeper使用--开源客户端 8. 【分布式】Zoo…...
软件免费网站大全/app数据分析软件
“ 关键字: “脱单盲盒 交友盲盒 "导读:脱单盲盒 交友盲盒小程序,可以发布相关信息月老在线牵盲盒|无需对接公众号|第三方支付/交友盲盒/一元交友|Z支付版/无限前端:采用的微信小程序,小程序云开发软件:微信小程…...
省机关事务局网站建设管理情况/常州seo招聘
1、在测试列表中插入一个多行文本字段,名字叫做Content,如下图: 2、在Content字段里,添加一个Link,如下图: 3、尝试输入Notes格式的Link,如下图: 4、点击OK的时候,弹出消…...
日本软银集团最大股东是谁/关键词优化排名网站
SSIS(SQL Server Integration Service)是从MS SQL 2005开始引入的,是一种ETL(Extract Transform Load)工具,SSIS比普通的ETL更进一步,它是可视化的,用Visual Studio来开发,包文件(*.dtsx)采用的…...
网站建设的步骤有哪些/网站快速收录的方法
mock:能进行后端数据模拟,生成随机数据,拦截Ajax请求 一、 创建好一个项目 1.安装axios 2.安装mockjs 3.html写一个简单的登录 <div class"home"><p><input type"text" placeholder"请输入账号" /></p>&…...