RHCE---Linux的计划任务

文章目录


前言

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


思维导图

相关推荐
wdxylb5 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20077 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪7 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk9 小时前
Linux 正则表达式
linux·运维
Fireworkitte10 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil90011 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char11 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘1212 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记16 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发16 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建