1. 任务调度原理
- 任务调度:是指系统在某个时间执行的特定的命令或程序。
- 任务调度分类.
- 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
crond任务调度:crontab进行定时任务调度
使用方法:crontab [选项]
- crontab [选项]
- -e:编辑crontab定时任务
- -i:查询crontab任务
- -r:删除当前用户所有的crontab任务
- -l:列出当前有哪些任务调度
service crond restart:重启任务调度
当保存退出后就生效了
快速入门
- 设置任务调度文件:/etc/crontab
- 设置个人任务调度。执行crontab -e命令
接着输入任务到调度文件
*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思说每个小时的每分钟执行ls -l /etc/ > /tmp/to.txt 命令
参数细节说明(注意星号之间要有间隔) | 项目 | 含义 | 范围 | | —- | —- | —- | | 第一个“” | 一小时当中的第几分钟 | 0-59 | | 第二个“” | 一天当中的第几小时 | 0-23 | | 第三个“” | 一个月当中的第几天 | 1-31 | | 第四个“” | 一年当中的第几月 | 1-12 | | 第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号说明
\*
:代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思。,
:代表不连续的时间。比如“0 8,12,16 * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令。-
:代表连续的时间范围。比如“0 5 1-6命令”,代表在周一到周六的凌晨5点0分执行命令。/n
:代表每隔多久执行一次。比如“/10 * 命令”,代表每隔10分钟就执行一遍命令。
- 特定时间执行任务案例
应用实列:
案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中
crontab -e
*/1 * * * * data >> /tmp/mydata
案例2:每隔2分钟,将当前日期和日历都追加到/home/mycal文件中
第一步 编辑一个脚本文件
vim /home/my.sh
date >> /home/mycal
cal >> /home/mycal
第二步:
crontab -e
*/1 * * * * /home/my.sh
案列3:每天凌晨2:00将mysql数据库testdb,备份到文件中,提示:指令为mysqldump -u root -p密码 数据库 >> /home/bd.bak
第一步:crontab -e
第二步:0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
8.2 at定时任务
基本介绍
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
- at命令是一次性定时任务计划,执行完一个任务后不再执行此任务了
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
- 查看指令是ps -ef | grep atd
[root@Tyc home]# ps -ef | grep atd
root 1089 1 0 Feb21 ? 00:00:00 /usr/sbin/atd -f
- 查看指令是ps -ef | grep atd
at命令格式
at [选项] [时间]
ctrl + D 结束at命令输入(两次)
at命令选项
- at时间定义的方法
- 相关方法
- atq命令,来查看系统中没有执行的工作任务
- atrm 编号 删除已经设置的任务
- 案列
- 2天后的下午5点执行/bin/ls /home
- 明天17点钟,输出时间到指定文件内 比如/root/date100.log