例行性任务的建立

例行性任务分两种:一种是循环执行。如windows中的排程。 另一种是一次性执行,只执行一次。

一、循环执行任务的建立(cron监控程序)

cron监控程序的配置文件分两组:一组是全局的基本配置,系统例行执行的任务,直接编辑:/etc/crontab 进行配置。
              一组是单个用户自定义的例行执行任务,用crontab命令进行配置。用crontab命令编辑的任务会存放到/var/spool/cron/username中。



(一)系统例行任务执行的配置

1、 /etc/crontab文件详解:


vi /etc/crontab进行配置


SHELL=/bin/bash                                         //告诉系统要用哪个shell环境,这里是bash shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin                      //path变量定义用来执行命令的路径
MAILTO=root                                             //每次cron脚本工作时,将邮寄消息mailto定义的用户名。如为空,则不寄。
HOME=/                                                  //设置执行命令和脚本时使用的主目录,此处是根目录。

# run-parts
01 * * * * root run-parts /etc/cron.hourly            //   /etc/cron.hourly中的脚本或可执行文件每小时运行一次
02 4 * * * root run-parts /etc/cron.daily             //   /etc/cron.daily中的脚本或可执行文件每天的4时02分运行一次
22 4 * * 0 root run-parts /etc/cron.weekly            //   /etc/cron.weekly中的脚本或可执行文件每同星期天的4时22分运行一次
42 4 1 * * root run-parts /etc/cron.monthly           //   /etc/cron.monthly中的脚本或可执行文件每月的1日4时42分运行一次。


上述crontab文件中的各项的意思分别为:

前五项依次表示为:分钟 小时 日期  月份  星期   

root:表示执行后面脚本的用户为身份为root用户,可改为其他用户
run-parts :表示用run-parts脚本来执行后面目录下的所有可执行文件。
/etc/cron.hourly:目录表示存有可执行文件和脚本的目录。


2、crontab中各项特殊符号详解:

(1) "*" 代表任何有效值
(2) "," 隔开一系列的数。如:1,3,8 只表示1,3,8这三个数。
(3)     整数数字之间的  "-"  号是表示一个范围,如: 3-8,即3到8这段之间。
(4) "/"  表示"/"前面这段时间内,每隔"/"后面的这段时间运行一次。  例:  0-59/2  在分钟内表示,每隔2分钟运行一次。即0-59分钟表内,隔2分钟就执行一次。
(5) week中, 0和7表示星期天。


例:   42  8,16,23  1-20  */3  *   cat /proc/meninfo>>/tmp/meninfo   //即每隔3个月的1到20号的8点42,16点42,23点42分,把  /proc/meninfo中的内容输入到   /tmp/meninfo中。

3、系统用户需建立非每小时,每周,每月执行的例行任务的话,而是根据自已的调度时间进行调度执行的话,还可以编辑文件放在/etc/cron.d目录下。语法与上面一样。例:touch update  先建一个文件,然后在这个文件里按以上格式进行编辑即可。

4、注意事项:最好不要修改crontab中原文。有其他执行时间的例行工作,可增加一行进行编辑,并更改执行行命令的目录。并把需执行的可执行文件放在新的目录下即可。  也可以在行尾直接增加执行命令。


(二)非根用户例行任务执行的配置

根用户以外的用户需使用cron设定例行任务时,需用crontab -e命令进行编辑,格式与上面所讲一样。编辑完后默认会保存在/var/spool/cron/username目录下。

1、根用户以外的其他用记登录系统
2、crontab -e 编辑
3、编辑完后自动保存在/var/spool/cron/username下。username为创建任务的用户名。
    注意:不要用vi命令编辑该文件

(三)控制对cron的使用。可以编辑:/etc/cron.allow  (允许执行cron的用户) 和  /etc/cron.deny文件(不允许使用cron的用户)。
                        格式都是每行一个用户。都不允许空格。当/etc/cron.allow文件存在时,则只有这个文件中列出的用户可以使用cron,即使 cron.deny文件存在也被忽略。
                        当只有cron.deny存在时,文件中的用户被禁止。


(四)cron守护进程每分钟检查/etc/crontab文件、/etc/cron.d目录、/var/spool/cron目录中的改变。如发现改变就会被载入。所以改变了某个crontab后,不必重启进程。


(五)   crontab [-u username][-ler]

-e:编辑crontab中的工作内容
-l:查看crontab中的工作内容
-r:删除crontab中的工作内容

-u:只有root用户能执行。帮其他用户建cron。


二、一次性执行任务  

at和 batch


(一)at  

at是用来在指定时间内调度一次性的任务。

要在某一指定时间内调度一项一次性作业:

1、at [-m ] time   

-m: 当执行任务后发邮件给用户
time: 是执行的时间。

例: at 1:00  5/12/03   //在2003年5月12日1点钟前完成任务。  月也可以是英文月份。

    at now + 5 minutes   //从现在开始后的5分钟执行任务。   还可以接小时,天数,星期。
             hour
             days
             weeks

在键入at 命令+时间后,出现提示符。在提示符后键入要执行的命令。可执行多条命令,只是在每条命令完成后按回车键。
输入完所有命令后按回车键。最后输入ctrl+D 键退出。也可以提示符后输入脚本。


2、atq  查询运行的at任务

3、atrm 任务号   //删除运行的at任务。用atq先查出任务号



(二)bath

at是按时间确定执行时间,bath是当系统承载量降到0.8以下时捃行一次性任务。


bath命令后,即出现提示符,在提示符后输入脚本或命令。