1 crond任务调度
1.1 基本介绍1.2 crontab指令1.3 设置任务的具体语法 2 at定时任务
2.1 基本介绍2.2 at指令
1 crond任务调度 1.1 基本介绍学习视频:https://www.bilibili.com/video/BV1Sv411r7vd相关
Linux学习 | Linux目录结构&远程登录
Linux学习 | vim编辑器&关机重启&登录注销
Linux学习 | 用户管理
Linux学习 | 常用指令
Linux学习 | 组管理和权限管理
任务调度:系统在某个时间定时执行特定的命令或程序
任务调度分类
① 系统任务调度:系统某些工作需要周而复始、重复地执行,如病毒扫描、日志清理
② 用户任务调度:个别用户可能需要定时执行的工作,如备份数据库、用户数据备份
拓展
① 系统任务调度的配置文件为/etc/crontab
② 用户自定义的任务调度需要使用crontab指令来设置,设置后产生的crontab文件会存放/var/spool/cron目录下,文件名与用户名一致
crond服务
概述:crond是Linux系统内部一个服务/程序/软件,用于定时执行特定的命令或程序/脚本
相关命令
基本语法:crontab [选项]
常用选项
PS:使用[选项]-e后,即执行crontab -e命令,会进入类似于vim编辑器的编辑界面,vim编辑器的语法在次同样适用,此时就可以将要设置的命令或程序写进入即可,保存后就会生成一个crontab文件
简单测试
在tom用户下,创建一个定时任务——每分钟将/home/tom目录下的信息添加到/home/tom/my-crond.txt文件中
① 先打开定时任务编辑界面 --> crontab -e
② 往编辑界面中输入该命令 --> */1 * * * * ls - l /home/tom/ > /home/tom/my-crond.txt(相当于每分钟执行一次ll /etc/ > /home/tom/my-crond.txt命令)
查看tom用户下所有的定时任务 --> crontab -l
概述:上面介绍的crontab命令是用来编辑、存放和管理定时任务,而具体设置定时任务需要设置任务的执行周期
基本语法:设置时间 要定时执行的命令/程序/脚本
设置时间的格式说明
例子:以上面的测试为例,向crantab文件中输入命令——*/1 * * * * ls - l /home/tom/ > /home/tom/my-crond.txt,可以看出该命令分为两个部分,前一部分就是用于设置时间——*/1 * * * *
时间格式具体解释:该格式分为5个组成部分,从左往右分别表示分钟、小时、日、月、星期
PS:每一部分之间必须用空格隔开,不然会有语法错误,设置时间的格式与后面的命令也要用空格隔开
时间格式中的各个字符解释
拓展测试:每分钟将当前时间和日历追加到/home/tom/my-time.txt文件中,时间和日历是两个命令,可以将两个命令写到shell脚本中,设置定时任务时直接设置定时执行对应的shell脚本文件即可
PS:这里涉及shell脚本的执行方式,参考博文:https://blog.csdn.net/timchen525/article/details/76407735、https://blog.csdn.net/yanxilou/article/details/88948709
① 先在/home/tom目录下创建一个shell脚本,命名为my-shell.sh(后缀名是.sh) --> vim /home/tom/my-shell.sh,用vim编辑器打开脚本文件后,在文件内添加两条命令 --> date >> /home/tom/my-time.txt和cal >> /home/tom/my-time.txt
② 然后查看my-shell.sh脚本文件的权限,如果对于所有者(tom)无执行权限x就给他添加上 --> chmod u+x /home/tom/my-time.txt
③ 在crontab文件中添加定时任务,直接执行shell文件即可 --> */1 * * * * /home/tom/my-shell.sh
④ 过一段时间后,打印/home/tom/my-time.txt文件查看 --> cat /home/tom/my-time.txt
at命令:at命令是一次性定时计划任务,at命令的守护进程atd会以后台模式检查任务队列(作业队列)来执行对应的任务
定时执行任务:默认情况下,守护进程atd每隔60秒回检查一次任务队列(作业队列),队列中有作业时,atd会再检查作业的运行时间,如果当前时间与该作业的运行时间一致,则执行该作业
一次性定时执行:已被执行的作业会被移出作业队列,以后不会再执行该作业,因此at命令设置的是一次性定时任务
PS:crontab指令设置的是周期性定时任务
注意事项
使用at命令时,一定要保证atd守护进程的开启,检查atd进程是否开启的指令 --> ps -ef | grep atd与crontab指令一样,at指令可以执行简单的命令,也可以执行shell脚本文件 2.2 at指令
基本语法:at [选项] [时间]
设置at定时任务过程:先使用at指令进入任务编辑/设置状态,然后输入具体要定时执行的命令或程序/shell脚本,最后输入两次ctrl+D完成定时任务设置
其他常用命令
atq:查看当前所有at定时任务atrm 任务编号(作业号):从任务队列中移除对应的任务
at指令的选项
❓标准输入输出
标准输入:从键盘获得输入,文件描述符为0标砖输出:输出/打印到控制台,文件描述符为1
at指令的时间格式
测试
① 明天17点将当前时间打印/输出到/home/tom/curr-date.log文件(如果不存在,会自动创建)中 --> at 5pm tomorrow + 回车 + date > /home/tom/curr-date.log + 两次ctrl+D
② 2分钟后将日期打印到/home/tom/curr-date.log文件中 --> at now + 2 minutes + 回车 + cal > /home/tom/curr-date.log + 两次ctrl+D
③ 查看当前所有at定时任务 --> atq