一,crond任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1,系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2,个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。又比如执行某些自己编写的shell脚本。
1,crontab命令
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
命令入门:
设置任务调度文件: /etc/crontab
设置个人任务调度。执行crontab -e命令。接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls -l /etc/ >/tmp/to.txt命令
也就是说*/1 * * * *
代表每小时的每分钟。
下面对这个参数进行细节说明:
1,占位符说明
2,特殊符号说明
3,个别例子
例如:
里面有一个命令 date >> /root/test/to2.txt
然后再查看to2.txt
可以发现过了4分钟执行了4次date命令
二,at定时任务
at定时任务就像我们写工作计划一样,可以规定未来的某个时刻干什么事情。只干一次。不像crontab一样是每隔多长时间干某件事情。
at的定时任务完成原理如下:
每at一个任务,后台的job队列就会添加一个任务。而at的守护进程atd每60秒查看一次job队列,如果有任务到了规定的运行时间,则执行这个任务。因此,想要保证at的任务执行,一定要保证atd进程运行,可以通过ps -ef l grep atd
命令检测atd是否在运行
1,at命令
at[选项][时间]
执行命令以后进入at程序,然后输入任务。Ctrl+D结束at命令的输入,注意要连续输入两次Ctrl+D
1.1 at命令选项
1.2 at指定时间的方法
1)接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如: 04:00
2)使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
3)采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如: 12pm
4)指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
5)使用相对计时法。指定格式为: now + count time-units ,now就是当前时间, time-units是时间单位,这里能够是minutes(分钟)、hours (小时)、days(天)、 weeks(星期)。count 是时间的数量,几天,几小时。例如: now + 5 minutes
6)直接使用today(今天)、tomorrow(明天〉来指定完成命令的时问。
1.3 举例
补充:atq
命令查看at还没有执行的命令,即查看job队列atrm 3
将job队列种编号为3的任务删除。