任务调度crontab、at
任务调度分类:
任务调度:系统在某个时间执行特定命令或程序,周而复始地执行
1、系统工作:某些重要工作必须周而复始进行,如病毒扫描
2、个别用户的工作:我们希望执行的某些程序,比如对mysql数据库备份
crontab 任务调度
crontab [选项]
crontab -e edit,编辑定时任务
crontab -l list,查询定时任务
crontab -r remove,删除所有定时任务
调用实例
执行
crontab -e
写入
*/1* * * * ls /root >> /home/handsome/boy.txt
退出后,自动开始执行。
参数说明
注:这里的“*”并不是“隔几分钟”,而是“第几分钟”
特殊符号
符号案例
注意:一般定义了几号就不要再定义周几,两者重复。
例:每隔一分钟向time.txt文件写入当前日期和日历
手动执行脚本
0、创建两个文件
touch /home/handsome/time.txt
touch /home/handsome/jiaoben.txt
1、在脚本中写入
cal >> time.txt
date >> time.txt
2、给脚本以执行权限
chmod u+x jiaoben.txt
3、手动执行脚本
./jiaoben.txt
4、查看是否成功
cat /home/handsome/jiaoben.txt
自动执行脚本
0、创建两个文件
touch /home/handsome/time.txt
touch /home/handsome/jiaoben.txt
1、在脚本中写入
cal >> time.txt
date >> time.txt
2、给脚本以执行权限
chmod u+x jiaoben.txt
3、进入任务调度编辑器
crontab -e
4、编辑内容
*/1 * * * * /home/handsome/jiaoben.txt
5、查看是否成功
cat /home/handsome/jiaoben.txt
at 定时任务
一次性的定时任务。
原理:
at的守护进程atd会以后台模式运行,每次检查作业队列再运行。
默认情况下,守护线程atd每隔60s检查一次。有作业时会检查作业运行时间,当匹配就运行。
前提
一定要保证atd进程的启动
查看目前进程atd是否启动
ps -ef | grep atd
at [选项] [时间]
Ctrl + D 两次,来结束at命令的输入
时间的指定
1、接收当天的hh:mm的事件指定。
若事件已经过去就放在第二天执行。
例: 04:00
2、使用模糊的时间单词
midnight、noon、teatime(下午四点)
3、采用十二小时制,带上AM PM
4、指定执行的具体时间及日期
三种格式:
month day
mm/dd/yy 月日年
dd.mm.yy 日月年
例如 04:00 2021-03-1 //指定的日期必须跟在指定固定时间后面
5、相对计时法 now +count time-units
time-units是时间单位,可以用:分钟、小时、天、星期 count:时间数量,几分钟、几天
例:now + 5minutes
6、直接今天、明天:today tomorrow
操作实例
1、输入at
at now + 2minutes 再回车
ls /home 再Ctrl+D两次
2、atq 查看已有的队列
atq
3、atrm 删除
atrm n //n为该工作的队列号