1
、工具概述
用于安排周期性的任务作业;
cron
根据时间、日期、星期、月份的组合来调度对重复作业任务的周期性执行;
查看系统中程序是否安装:
cron
程序依赖于
vixie-cron
RPM
软件包;
rpm –q vixie-cron
Cron
对应的系统守护进程:
crond
查看系统中是否正在运行
cron
服务:
service crond status
2
、程序配置
Cron
的主配置文件
/etc/crontab
,包括内容如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
――前四行是shell环境变量,设置cron运行的系统环境;
# 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
minute hour day month dayofweek command
分钟 小时 天 月 星期 要执行的命令
Ø
minute
—
分钟,从
0
到
59
之间的任何整数
Ø
hour
—
小时,从
0
到
23
之间的任何整数
Ø
day
—
日期,从
1
到
31
之间的任何整数(如果指定了月份,必须是该月份的有效日期)
Ø
month
—
月份,从
1
到
12
之间的任何整数(或使用月份的英文简写如
jan
、
feb
等等)
Ø
dayofweek
—
星期,从
0
到
7
之间的任何整数,这里的
0
或
7
代表星期日
Ø
command
—
要执行的命令(命令可以是
ls /proc >> /tmp/proc
之类的命令,也可以是执行你自行编写的脚本的命令。)
在以上任何值中,星号(
*
)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(
-
)指定一个整数范围。如
1-4
意味着整数
1
、
2
、
3
、
4
用逗号(
,
)隔开的一系列值指定一个列表。如
3, 4, 6, 8
标明这四个指定的整数
正斜线(
/
)可以用来指定间隔频率。在范围后加上
/<integer>
意味着在范围内可以跳过
integer
。如
0-59/2
可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,
*/3
的值可以用在月份字段中表示每三个月运行一次任务;
Cron
程序使用
run-parts
脚本来执行
/etc/cron.hourly
、
/etc/cron.daily
、
/etc/cron.weekly
和
/etc/cron.monthly
目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是
shell
脚本。
Run-parts
脚本位置:
/usr/bin/run-parts
Run-parts
脚本作用:
将会执行目标目录中所有的脚本
,
这些脚本会以
ASCII
码的循序进行排列,
当然
,
这些脚本都需要具有可执行权限;
3
、配置命令
crontab
命令的功能是在一定的时间间隔调度一些命令的执行
;
crontab
命令有三种形式的命令行结构:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r]
-r----
作用是从
/usr/spool/cron/crontabs
目录下删除用户定义的文件
crontab
;
-l----
选项的作用是显示用户
crontab
文件的内容
;
crontab -u user -e
命令编辑用户
user
的
cron
作业
,
用户通过编辑文件来增加或修改任何作业请求
;
crontab -u user -r
即可删除当前用户的所有的
cron
作业
;
作业与它们预定的时间储存在文件
/var/spool/cron/crontabs/username, username
使用户名,在相应的文件中存放着该用户所要运行的命令
;
命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户
;
cron
守护进程每分钟都检查
/etc/crontab
文件、
etc/cron.d/
目录、以及
/var/spool/cron
目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个
crontab
文件改变后就不必重新启动守护进程了;
4
、控制对
cron
的使用
/etc/cron.allow
和
/etc/cron.deny
文件被用来限制对
cron
的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,
cron
守护进程(
crond
)不必被重启。使用控制文件在每次用户添加或删除一项
cron
任务时都会被读取。
无论使用控制文件中的规定如何,根用户都总是可以使用
cron
。
如果
cron.allow
文件存在,只有其中列出的用户才被允许使用
cron
,并且
cron.deny
文件会被忽略;
如果
cron.allow
文件不存在,所有在
cron.deny
中列出的用户都被禁止使用
cron
;
二、
anacron
anacron
是和
cron
相似的任务调度器,只不过它并不要求系统持续运行,它可以用来运行通常由
cron
运行的每日、每周、和每月的作业;
要使用
anacron
服务,你必须安装了
anacron
RPM
软件包,
anacron
服务必须在运行;
要判定该软件包是否被安装,使用
rpm -q anacron
命令
要判定该服务是否在运行,使用
/sbin/service anacron status
命令
1
、配置
anacron
Anacron
与
cron
一样用来调度重复的任务,周期性安排作业;
任务被列在配置文件
/etc/anacrontab
中。文件中的每一行都代表一项任务,格式是:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
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
格式:
period delay job-identifier command
Ø
period
—
命令执行的频率(天数)
Ø
delay
—
延迟时间(分钟)
Ø
job-identifier
—
任务的描述,用在
anacron
的消息中,并作为作业时间戳文件的名称,只能包括非空白的字符(除斜线外)。
Ø
command
—
要执行的命令
对于每项任务,
anacron
先判定该任务是否已在配置文件的
period
字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,
anacron
会等待
delay
字段中指定的分钟数,然后执行
command
字段中指定的命令;
任务完成后,
anacron
在
/var/spool/anacron
目录内的时间戳文件中记录日期;
三、
at
和
batch
一次性作业任务
at
命令被用来在指定时间内调度一次性的任务;
batch
命令被用来在系统平均载量降到
0.8
以下时执行一次性的任务;
要使用
at
或
batch
命令,你必须安装了
at
RPM
软件包,并且
atd
服务必须在运行
要判定该软件包是否被安装了,使用
rpm -q at
命令
要判定该服务是否在运行,使用
/sbin/service atd status
命令
程序对应的系统守护进程为:
atd
1
、配置
at
作业
要在某一指定时间内调度一项一次性作业,键入
at time
命令。这里的
time
是执行命令的时间
time
参数可以是下面格式中任何一种:
·
HH:MM
格式
—
譬如,
04:00
代表
4:00AM
。如果时间已过,它就会在第二天的这一时间执行
·
midnight —
代表
12:00AM
·
noon —
代表
12:00PM
·
teatime —
代表
4:00PM
·
英文月名
日期
年份
格式
—
譬如,
January 15 2002
代表
2002
年
1
月
15
日。年份可有可无
·
MMDDYY
、
MM/DD/YY
、或
MM.DD.YY
格式
—
譬如,
011502
代表
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2002 年 1 月 15
日
·
now +
时间
—
时间以
minutes
、
hours
、
days
、或
weeks
为单位。譬如,
now + 5 days
代表命令应该在
5
天之后的此时此刻执行
时间必须要被先指定,接着是可有可无的日期;
[root@localhost /]# at 17:00
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at>
at>
提示就会出现,键入要执行的命令,按
[Enter]
键,然后键入
Ctrl-D
。你可以指定多条命令,或者,你也可以在提示后输入
shell
脚本,在脚本的每一行后按
[Enter]
键,然后在空行处键入
Ctrl-D
来退出;
使用命令
atq
来查看等待运行的作业
如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户;
2
、配置
batch
作业
要在系统平均负载量降到
0.8
以下时执行某项一次性的任务,使用
batch
命令;
键入
batch
命令后,
at>
提示就会出现。键入要执行的命令,按
[Enter]
键,然后键入
Ctrl-D
;类似于
at
命令的操作;
系统平均负载量一降到
0.8
以下,这组命令或脚本就会被执行;
如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户;
batch
命令的用法能够被制约
3
、
at batch
命令参数
at
和
batch
的其它命令行选项包括:
选项
描述
-f
从文件中读取命令或
shell
脚本,而非在提示后指定它们
-m
在作业完成后,给用户发送电子邮件
-v
显示作业将被执行的时间
4
、控制对
at
和
batch
的使用
/etc/at.allow
和
/etc/at.deny
文件可以用来限制对
at
和
batch
命令的使用;
不论使用控制文件如何规定,根用户都总是可以执行
at
和
batch
命令;
如果
at.allow
文件存在,只有其中列出的用户才能使用
at
或
batch
命令,
at.deny
文件会被忽略;
如果
at.allow
文件不存在,所有在
at.deny
文件中列出的用户都被禁止使用
at
和
batch
命令;
5、一些文档
用
man
可以看到;
转载于:https://blog.51cto.com/infosec/90986