Cron任务计划
我们将系统执行的计划写成了脚本,但是不立即执行,安排在未来的某一时刻执行,这种机制就叫做任务计划,
任务计划方式有两种,下面详细介绍一下
1、在未来的某个时间点执行一次某任务;两个命令(at和batch)
at
batch
at 时间
at> COMMAND
at> Ctrl+d
指定时间:
绝对时间:HH:MM, DD.MM.YY MM/DD/YY
相对时间:now+#
单位:minutes, hours, days, weeks
模糊时间:noon, midnight, teatime
命令的执行结果:将以邮件的形式发送给安排任务的用户 ,后面必须加上单位。
at -l :显示作业的
at -d AT_JOB_ID = atrm AT_JOB_ID:删除作业的
2、周期性地执行某任务;(cron)
cron:自身是一个不间断运行的服务
anacron: cron的补充,能够实现让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次;
cron:
系统cron任务:
/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
~
分钟 小时 天 月 周 用户 任务
用户cron任务:
/var/spool/cron/USERNAME
分钟 小时 天 月 周 任务
时间的有效取值:
分钟:0-59
小时:0-23
天:1-31
月:1-12
周:0-7,0和7都表示周日
时间通配表示:
*: 对应时间的所有有效取值
3 * * * *
3 * * * 7
13 12 6 7 *
,: 离散时间点:
10,40 02 * * 2,5
-:连续时间点:
10 02 * * 1-5
/#: 对应取值范围内每多久一次
*/3 * * * *
每两小时执行一次:
08 */2 * * *
每两天执行一次:
10 04 */2 * *
执行结果将以邮件形式发送给管理员:
*/3 * * * * /bin/cat /etc/fstab &> /dev/null
cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找
PATH /bin:/sbin:/usr/bin:/usr/sbin
用户任务的管理:
crontab
-l: 列出当前用户的所有cron任务
-e: 编辑
-r: 移除所有任务
-u USERNAME: 管理其用户的cron任务
anacron:是cron的补充,替代不了
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
要想使用cron任务,必须保证cron服务是运行的