我们每天都要干很多事情,例如上下班打卡,参加会议,还有有仪式感的约会,纪念日等。很多事情害怕自己忘掉,便用便签记录。但是记录便签会很不方便,丢了或者不能及时提醒你。而用计算机则会方便很多。今天我们就为大家介绍一下linux中的定时计划任务
首先通过概念我们可以将定时计划任务分为两类:
- 定时执行一次任务:at ,(batch)
- 周期性的运行某任务:crontab
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘,日志清理等。/etc/crontab文件就是系统任务调度的配置文件
用户任务调度:用户定期要执行的工作,比如用户数据备份,定时邮箱提醒等。用户可以使用crontab工具来定制自己的任务计划。所有用户定义的crontab文件都被保存在/var/spool/cron目录中
mail命令:
使用mail命令时,首先必须将sendmail启动。service start sendmail
可能有些用户没有安装,通过 yum install sendmail -y
安装
选项
选项 | 作用 |
- s | 表明邮件主题 |
- c | 写明抄送地址 |
- b | 写明密送地址 |
三种常见的发信格式
mail -s test user1@user1.com //第一种,直接在shell中编辑,编辑完按Ctrl D结束
echo "mail content" | mail -s test user1@user1.com //第二种,使用管道方法
mail -s test user1@user1.com < file //第三种,将file文件内容作为邮件发信
命令
语法
at 选项 参数
选项
选项 | 作用 |
- V | 印出版本编号 |
- q | 使用指定的伫列(queue)来存储,at的资料是存放在所谓的queue中,使用者可以同时使用多个queue,,而queue的编号为a-z,A-Z共52个 |
- m | 即使程序/指令执行完成后没有输出结果,也要寄封信给使用者 |
- f file | 读入预先写好的命令档。使用者不一定使用交互模式来输入,可以经所有的指定写入档案后再一次性读入 |
- l | 列出所有指定(也可以使用atq) |
- d | 删除指定(也可以用atrm) |
- v | 列出所有已完成但未删除的指定 |
相关命令
batch:在系统负荷允许的情况下执行at任务,即就是在系统空闲时才执行at任务
示例
启动服务
/etc/init.d/atd start
1分钟后执行
at now +1 minutes
查看所有指定
atq // at -l
删除指定
atrm number // number为指定对应的数字
2.crond命令
Linux系统是由cron(crond)系统服务来控制的。Linux系统上原本就有很多计划性工作,因此crond这个系统服务是默认启动的,为用户提供的使用命令crontab
查看配置文件:
cat /etc/crontab
时间表示法:
(1)特定值
- 给定时间点的有效取值范围内
(2)*
- 给定时间点的有效取值范围内,表示“所有”
(3)离散取值
- 在时间点上使用逗号分隔:#,#,#
(4)连续取值
- 在时间点上使用 - 来链接:#-#
(5)表示步长
- /# ,#即步长,eg:在分钟上定义,/2 :即为每两分钟执行一次
语法结构图
如果没有安装服务则:yum install crontab -y
服务操作说明
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //启动服务
选项
选项 | 作用 |
- e | 编辑任务 |
- l | 列出所有任务 |
- r | 移除所有任务;即删除/ver/spool/cron/USERNAME文件 |
- i | 在使用 - r 时提醒用户确认 |
- u user | root可以指定用户管理cron任务 |
实例
* * * * * command 每一分钟执行一次
15 10 * * * 每天上午10:15执行
15,35 10 * * * 每天上午10点的15分和35分执行
*/30 21-23 * * * /etc/init.d/smb restart每天晚上21点到23点,每半小时执行一次重启smb