将系统还未执行的任务写成脚本,并在未来的某个时间执行它,这样的机制就叫做任务计划。
一、在未来的某个时间点执行一次某任务,有at和batch两个命令,本文只讲at;
1、at
at + 未来的时间,提示符下输入命令,如
at> COMMAND
at> Ctrl + d
如此就可以在你所想要的时间去执行你所想执行的任务计划了。
2、指定时间的方法:
绝对时间: HH:MM, DD:MM:YY, MM/DD/YY
相对时间:now+#
单位:minutes,hours,days,weeks
*模糊时间:noon,midnight,teatime(下午4点)
命令的执行结果:将以邮件的形式发送给安排任务的用户
at -l = atq :显示自己的任务列表
at -d AT_JOB_ID = atrm AT_JOB_ID:删除某个作业
3、例: at now+3minutes
at> ls /var
at> cat /etc/fstab
at> <EOF>
一些实用命令:at -l 查看作业
at -d # 删除#号作业
二、周期性地执行某任务 cron
Cron :自身是一个不间断运行的服务,运行在至少长时间不会关机的服务器上
1、Cron分类
1)系统cron任务
/etc/crontab
分钟 小时 天 月 周 用户 任务
2)用户cron任务
/var/spool/cron/USERNAME
分钟 小时 天 月 周 任务
2、时间的有效取值:
计划任务的书写格式:分钟 小时 日 月 周 [用户名] 命令
分钟:表示从一个小时的第几分钟来执行,范围:0~59;
小时:表示从一天的第几个小时来执行,范围:0~23;
天:表示从一个月的第几天来执行,范围:1~31;
月:表示从一年的第几个月来执行,范围:1~12;
周:表示从一周的第几天来执行,范围0~7,其中0和7都表示表示周日;
3、时间通配表示
1) *:对应时间的所有有效取值,如:
3 * * * * 每小时第3分钟
3 * * * 7 每周日的每小时的第3分钟
3 11 6 7 *: 每年7月6号11点3分执行
Ps:注意每天和每周不会同时使用
2) ,:离散时间点, 如
10,40 * * * 2,5(每周二和周五的每小时执行两次)
3) -:连续时间点, 如
10 02 * * 1-5(周一至周五的凌晨2点10执行)
4) /: 对应取值范围内每多久一次, 如
*/3 * * * * 每三分钟执行一次
01 */2 * * * 每两小时执行一次
10 04 */2 * * 每两天执行一次
注意:执行结果将以邮件形式发送给管理员:
*/3 * * * * cat /etc/fstab &> /dev/null
cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找
PATH /bin:/sbin/usr/bin:/usr/sbin
anacron:cron的补充,能够实现让cron因为各种原有在过去的时间该执行而未执行的任务在恢复正常运行一次
4、用户任务的管理:crontab
crontab 后面有很多子命令,下面我们就简单来了解一下常用的子命令
-l: 列出当前用户的所有任务
-e: 编辑
-r: 移除当前用户的所有任务
-u USERNAME: 管理其他用户的cron任务
anacrontab:是crontab的补充,但不能代替crontab,最小执行单位是天,而crontab 的最小执行单位是分钟