Linux定时任务调度
任务调度
概述
任务调度是指系统在某个时间执行特定的命令或程序,任务调度主要有两种,第一种是系统工作,需要周而复始的执行,比如病毒扫描。第二种是个人用户工作,用户需要在某个特定的事件执行某些程序,比如备份数据库。
在 Linux 中使用 corntab 和 at 进行定时任务的设置
crond定时任务
基本语法
//编辑crontab定时任务
crontab -e
//查看当前crontab定时任务
crontab -l
//删除当前用户所有的crontab任务
crontab -r
定时执行指令任务
//首先执行
crontab -e //进入任务编辑
//然后输入要执行的任务
*/1 * * * * /etc/ > /tmp/list.txt
五个占位符的说明
项目 | 含义 | 范围 |
---|---|---|
第一个 | 分钟 | 0~59 |
第二个 | 时钟 | 0~23 |
第三个 | 一个月的第几天 | 1~31 |
第四个 | 一年中的低级月 | 1~12 |
第五个 | 星期几 | 0~7 |
关于特殊符号说明
符号 | 含义 |
---|---|
* | 范围内的任何值 |
, | 不连续时间 |
- | 连续时间 |
*/n | 每间隔n个单位时间 |
定时执行脚本或程序
- 首先使用vim编辑器写一个脚本文件,如下
vim /home/my.sh
//写入如下简单示例指令
*/1 * * * * date >> /tmp/mydate.txt
示例给出的是一个简单的指令,我们也可以写更复杂的shell脚本或Java程序
2. 然后需要给当前用户增加my.sh的执行权限
chmod u+x /home/my.sh
- 最后向crontab中写入执行shell的指令
crontab -e
*/1 * * * * /home/my.sh
at定时任务
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行,默认情况下atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果与当前时间匹配就会运行次作业。
注意:at命令在使用时,一定要保证atd进程的启动,可以使用指令 ps-ef | grep atd 来检测atd是否在运行。
at命令格式
at [选项] [时间]
输入两次 Ctrl+D 来结束at任务的输入
at命令选项
选项 | 含义 |
---|---|
-I | 等同于atq,显示当前at任务队列 |
-d | 等同于atrm,后跟一个数组表示删除队列中的第几个at任务 |
-q <队列> | 使用指定队列 |
-f <文件> | 从指定文件读入任务 |
at指定时间
- 使用hh:mm指定
- 采用12小时制+AM/PM 指定
- 使用hh:mm 年-月-日指定
- 相对计时,比如now + 5 hours(minutes/days/weeks)
学习总结来源于韩顺平老师一周学会Linux