任务计划:
1.在未来某个时间点执行一次某任务:
#at
#at [OPTION] TIME
at>COMMAND
at>...
at>Ctrl+d提交
[OPTION]
-l 显示作业列表,相当于#atq命令
显示格式如下:
JOBID RUNTIME ALIGNMENT USER
ALIGNMENT(队列)只能用单个字符[a-z][A-Z]表示,默认队列为a。
-d JOBID 删除作业,相当于#atrm命令。
-f FILE 从FILE中读取任务
-q ALIGNMENT 使用名为ALIGNMENT的队列
TIME
绝对时间:
HH:MM 下一个最近的时间。
MM/DD/YY
DD.MM.YY
例如:
#at 10:30
#at 12/31/2015
#at 31.12.2051
相对时间:
now+NUMUNIT
UNIT
minutes
hours
days
weeks
模糊时间:
noon 中午12点
midnight 凌晨12点
teatime 下午4点
例如:
now+3m
命令的执行结果,以邮件的方式发送给安排任务的用户。
例如:
#at now+3minunts
at>ls /var
at>cat /etc/fstab
at>Ctrl+d
at的白名单和黑名单:
/etc/at.allow 白名单
/etc/at.deny 黑名单
两者关系如下:
1.只有/etc/at.allow存在,只有在白名单内的用户才能使用at命令。
2.只有/etc/at.deny存在,任何在黑名单内的用户都不能使用at命令。
3.如果两个都不存在,只有超级用户才能使用at命令。
4.如果两个都存在,则allow文件将生效,deny文件将被忽略。
5.空的/etc/at.deny表示任何人都能使用at命令。这是一个默认的设置。
#batch
不需要指定时间,会在系统空闲时执行任务。其他使用方法和at相同。
2.周期性的执行某任务:
cron:自身是一个不间断运行的服务,服务名称为crond。
系统cron任务
/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
分钟 小时 天 月 周 用户 任务
用户cron任务
/var/spool/cron/USERNAME
分钟 小时 天 月 周 任务
设定任务的时间的有效取值:
分钟: 0-59
小时: 0-23
天: 1-32
月: 1-23
周:0-7,0和7都表示周日
时间的通配表示:
* 对应的所有时间有效取值
, 离散时间点取值
- 连续时间点
/NUM 对应取值范围内没多久一次
例如:
3 * * * * 每小时的第3分钟执行。
3 * * * 7 每周日的每个小时的第3分钟执行。
13 12 * * * 每天的12点13分执行。
13 12 * * 5 每周5的12点13分执行。
13 12 6 * * 每月6号12点13分执行。
13 12 6 * 3 每月6号同时是周3的天的12点13分执行。
13 12 6 7 * 每年7月6号12点13分执行。
10,40 * * * 每小时10分和40分执行。
10,40 * * 2,5 每周2和周5每小时10分和40分执行。
10 02 * * 1-5 每周1至周5的2点10分执行。
*/3 * * * * 每3分钟执行一次。
1 */2 * * * 每2小时的1分执行一次。
执行结果将以邮件形式发送给管理员。
例如:
*/3 * * * * /bin/cat /etc/fstab > /dev/null 将正确信息发送给/dev/null,错误的信息则会保留。
cron的环境变量:cron执行的所有命令都去PATH环境变量制定的路径下去找。
PATH /bin:/sbin:/usr/bin:/usr/sbin
cron的黑白名单:
/etc/cron.allow
/etc/cron.deny
和at的黑白名单一样。
#crontab [OPTION]
[OPTION]
-l 列出当前用户所有的的cron任务
-e 编辑任务
-r 移除所有任务。实质是删除cron任务文件。
-u USERNAME 指定其他用户
anacron:
cron的补充程序,能够实现让cron因为其他原因在过去的时间内该执行但是未执行的任务,在恢复正常后执行一次。服务名称为anacron。
/etc/anacrontab
SHELL=/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
MAITTO=root
过去未执行的周期 开机后指定分钟执行 注释信息 任务