linux 任务计划

任务计划:

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

过去未执行的周期 开机后指定分钟执行 注释信息 任务


你可能感兴趣的:(linux,cron)