当前位置: 首页 > news >正文

RHCE---Linux的计划任务

文章目录

  • 目录

    文章目录

    前言

    一.单一执行的例行性工作

    at 命令

    二.循环执行的例行性工作

    crontab 命令

    课后作业: 

    思维导图


前言

      如果想要让自己设计的备份程序可以自动地在系统下面运行,而不需要手动来启动它,这是该如何处理?这些任务可以分为【单一】任务和【循环】任务,在系统内又是哪些服务在负责?有的工作是例行性的,而有些任务是临时发生的。但是计算机不在身边这时就可以使用计划任务(corntable)来实现。


一.单一执行的例行性工作

仅执行一次,执行过后自动删除

at 命令

概述:

   at命令是Linux下的一种任务调度工具,可以让用户在指定的时间运行一次命令,或在指定时间段内运行周期性的任务。其作用可以概括为:

  • 在指定的时间运行一次命令,比如设定好一个时间,在那个时间运行备份脚本。

  • 在指定时间段内运行周期性的任务,比如设定好在每天的某个时间运行任务。

  • 做一些定时任务或者负载抑制等处理,比如利用 at 命令来分散高峰时间段内用户的大量请求。

总之,at命令可以帮助我们方便地完成一些定时任务,提高工作效率。

at 命令详解

命令格式:at [参数] [时间]

参数:
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容
-f 从文件中读取作作业
时间格式:
HH:MM  在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明
天执行
HH:MM YYYY-MM-DD  强制规定在某年某月的某一天的特殊时刻进行该工作
now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks

at命令的工作过程

  • /etc/at.allow 写在该文件的人可以使用at命令
  • /etc/at.deny 写在黑名单中的人不可用
  • 两个文件都不存在,只有root能使用

 root 会将计划任务记录在 /var/spool/at/ 目录中 通过查看该目录下的目录文件 spool 

查询计划任务。

 root 用户如何设置例行性文件的指令使得系统在固定的时间干什么事情?

#设置任务执行的时间为22:49
[root@localhost ~]at 22:49
warning: commands will be executed using /bin/sh
#设置执行的内容为打印hello
at> wall hello
#执行此命令
at> 按Ctr+D 

查看/var/spool/at/ 目录查询计划任务

[root@localhost ~]# ll /var/spool/at/
总用量 4
-rwx------. 1 root root 3305  9月 20 10:47 a0000101af20c9
drwx------. 2 root root    6  4月  4  2022 spool

拓展配置

#定义三分钟之后显示hello
[root@server ~]# at now + 3 minutes

 任务执行结束后自动删除

二.循环执行的例行性工作

每隔一定的周期就需要执行一次

crontab 命令

概述:

    Crontab是一种在Linux系统上运行自动任务的时间管理工具。通过使用Crontab命令,用户可以在指定的时间间隔内周期性地运行命令或脚本。Crontab命令支持的时间粒度为分钟、小时、日、月、星期,用户可以根据自己的需要灵活地设置定时任务。

crontab 命令详解:

[root@localhost ~]# crontab  --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -V         print version and exit
 -x <mask>  enable debugging
crontab -e:编辑当前用户的定时任务列表
crontab -l:列出当前用户的所有定时任务
crontab -r:删除当前用户的所有定时任务
/数字指定时间的间隔频率,例如每 3 分钟进行一次,*/3
*代表任何时刻
,代表分隔时段
-代表一段时间范围

 crontab 命令工作过程

  • /etc/cron.allow,写在该文件的人可以使用crontab命令

  • /etc/cron.deny,黑名单

  • 两个文件如果都不存在,只有root能使用

如何每天创建一个普通文件? 

使用touch命令创建普通文件  date命令显示时间,结合可得:

显示当前日期:date +F

··反单引号:代表优先执行,否则date +F将被认为是touch命令参数

#创建一个2023-9-20的文件
[root@localhost ~]# touch `date +%F`.txt

成功创建文件

如何每天自动创建文件?

下图是计划任务的格式

#编辑执行计划的内容
[root@localhost ~]# crontab -e
#查看编辑计划的内容
[root@localhost ~]# crontab -l
* * * * * wall hello
#删除执行计划
[root@localhost ~]# crontab -r
#每分钟创建一个和时间有关系的文件
[root@localhost ~]# crontab -e
#写入任务计划的内容
* * * * * touch  /root/ `date +\%H+%M`.txt
注:% 在crontab 循环列表中有特殊含义,需要转译 % 

 注:% 在crontab 循环列表中有特殊含义,需要转译 % 

在%前加 \

由于没有执行计划因此查看系统日志

[root@localhost ~]#tail -f /var/log/cron

课后作业: 

1.atd和crond两个任务管理程序的区别
2.指定在每周周一09:00将时间写入testmail.txt文件中
3.指定在每天凌晨4:00将该时间点之前的系统日志信息(/var/log/messages )备份到目录下/backup,备份后日志文件名显示格式logfileYY-MM-DD-HH-MM
4、配置ntp时间服务器,确保客户端主机能和服务主机同步时间

 作业1:区别如上文章所述

作业2 :

#创建一个第一天作业目录day1
[root@timeserver ~]# mkdir day1

#在day1目录中创建文件 testmail.txt
[root@timeserver day1]# touch testmail.txt

#使用crontab命令循环执行任务
[root@timeserver day1]# crontab -e

#编辑如下内容
0 9 * * 1 date >> /root/day1/testmail.txt
  • 为方便测试将要求改为了 每周五20:23将时间写入文件

 要求3:

#在day1目录下创建backup目录
[root@timeserver day1]mkdir backup 
#指定时间备份文件
[root@timeserver day1]crontab -e
#编辑以下内容
0 4 * * * cp /var/log/messages /root/day1/backup/logfile`date +\%Y-\%m-\%d-\%H-\%M`

注: 此处需要使用 反引号` ` 和反斜杠 \ 转译

要求4:时间服务器配置文章


思维导图

相关文章:

  • Docker网络+资源控制
  • 【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
  • React Hooks使用经验以及技巧
  • 时间轮算法
  • Python 编程基础 | 第一章-预备知识 | 1.4、包管理工具
  • 网络安全——黑客(自学)
  • 【牛客网】排序子序列
  • 算法 括号生成-(递归回溯+同向双指针)
  • 解决仪器掉线备忘
  • 希望杯、希望数学系列竞赛辨析和希望数学超1G的真题和学习资源
  • 邮件功能-python中的SMTP协议邮件发送
  • Ubuntu Postgresql开机自启动服务
  • 在北京多有钱能称为富
  • ubuntu20.04 安装 pyconcorde
  • SpringCloud 学习(一)简介和环境搭建
  • Linux下gdb常规调试
  • 如何办一份有价值的企业内刊/报纸?向《华为人》学习就够了
  • 06_ElasticSearch:索引和文档的CURD
  • 【力扣2154】将找到的值乘以 2
  • 小皮面板配置Xdebug,调试单个php文件
  • 世界史圆桌|16-18世纪的跨太平洋贸易
  • 中汽协发布规范驾驶辅助宣传与应用倡议书
  • 中国在建结构第一高楼“天津117大厦”将复工,预计2027年完工
  • 山西一国道发生塌陷,造成4车追尾2人死亡
  • 从黄仁勋到美国消费者,都在“突围”
  • 上海推出平台算法治理合规指引:不得“静默推荐”,算法应用向上向善