第12章: 调度cron任务
※使用cron来提交,列表,和删除时间调度的任务。
※安排全量和增量的备份的自动运行。
※让非root用户使用cron
12.1 cron守护进程
-cron 守护进程
※在指定的日期和时间执行命令
※ 自动完成日常的任务
※ 例子:
-修剪系统的日志文件
-执行系统备份
-产生每周的报表
系统管理员通常需要在每天,每周,每月做备份和运行其他的进程。虽然这些进程都可以手工运行,但是通常都需要安排它们自动运行。cron守护进程的作用就在与此。
cron守护进程在系统引导的时候和系统管理员和其他用户执行时间调度任务提交的时候启动。
你可以用ps 命令来检查是否cron守护进程正在运行。
# ps –ef |grep cron?? #cron正在运行吗?
# cron ??????????# 如果没有运行,启动cron 守护进程。
同root一样,普通用户也可以使用cron来重复运行程序。要执行的任务通过crontab命令来提交给cron执行。root通过/var/adm/cron/cron.allow文件来控制谁有权使用crontab命令。如果用户的名字出现在cron.allow文件中,他就有权使用crontab命令。如果cron.allow文件不存在,系统会检查/var/adm/cron/cron.deny文件来确定是否这个用户被拒绝存取。如果两个文件都存在,cron.allow有优先权。如果两个文件都不存在,只有root可以提交任务。如果cron.deny文件为空文件,所有的用户都可以使用crontab.
*.allow *.deny
谁可以使用?
- -
存在 忽略
- 存在
为空 忽略
- 为空
超级用户
*.allow中的任何用户
不在*.deny中的任何用户
超级用户
每个用户
12.2 cronfile
cron任务在一个cron文件中定义。cron文件提交cron任务给cron守护进程。提交给cron守护进程的程序在cron文件中被列出,一行代表一个任务。
cronfile中的条目的格式必须是cron能识别的格式。这个文件中的每一个条目包含六个域,每一个域用空格或tabs分割。前五个域为整数形式,代表命令将要执行的日期和时间。如上图所示。其中任一个域都可以包含一个星号,代表所有的合法字符,或者是一个条目列表,用逗号分开。每一个条目都可以是一个数字或者是两个用短线分开的数字,代表一个范围。
最后的一个域是一个字符串,代表shell在指定的时间执行的程序。在这个域中,百分号代表以下是一个新行。
注意:你必须重定向你的命令的标准输出和标准错误。如果你不这样做,所有的输出都会mail给你。
任何时候都要使用完全的路径名,因为cron只使用/usr/bin/sh的标准环境,它不清你的环境,例如,你当前的目录,变量,和PATH.
问题:
如果你执行一条命令,在cron文件的时间域,应该是怎样的一个数字:
1.每天下午6:30.?
2.每个工作日的下午6:30?
3.每个周日,周三,和周五的下午6:30分?
4.每十分钟,每个小时,每一天?
12.3?使用crontab命令管理cronfile
每一个有权提交任务给cron的用户在/var/spool/cron/crontabs
目录下有一个文件。文件名为用户的登录名。一旦这个用户的cronfile被crontab命令激活,以后对这个命令的使用会导致/var/spool/cron/crontabs下的crontab文件被替代。
crontab命令可以用来创建,更改,或删除cron任务:
crontab –e ??自动拷贝你当前的cron 任务到一个临时的文件,然后启动vi,让
你可以更改,删除,临时cron文件中的行,然后保存你的修改,让cron守护进程确认你的修改。
crontab –r ??删除你当前所有的cron任务。
crontab –l ??列出你当前所有的cron任务。
在默认情况下,crontab只打开用户自己的cron
文件。但是系统管理员可以在crontab命令中通过指定用户的用户名来更改任何用户的cron文件
12.4 当任务被调度的时候发生了什么?
在默认情况下,
只有系统管理员能够提交任务给cron执行。如果你想要其他的用户使用cron守护进程,你要将用户名加入到文件/var/adm/cron/cron.allow中,同样,你可以在/var/adm/cron/cron.deny中定义哪个用户不能使用cron。
每一个被授权执行cron任务的用户在/var/spool/cron/crontabs目录下都有一个cron文件。cron守护进程参考这些文件来决定在什么时候执行哪一个任务。
当你使用crontab命令建立和提交一个cron文件给cron守护进程的时候,crontab自动拷贝你的cron文件到/var/spool/cron/crontabs目录下。这个文件用你的用户名来命名。
当设定时间到的时候,cron会启动你的任务,并且在/var/adm/cron/log文件中写入一条日志。这个cron日志文件的大小没有限制,但是,系统会周期性地检查和清空这个文件。
注意:虽然/var/spool/cron/crontabs文件可以使用ls 和cat
浏览,但不要直接地编辑和删除。这样做会让cron守护进程成为一种未定义的状态。所以,在更改你的调度cron任务的时候,请使用crontab命令。
阅读(1268) | 评论(0) | 转发(0) |