http://hi.baidu.com/qu6zhi/blog/item/d67f6634ac57f3bed1a2d37f.html
crontab 的
功能 是在一定的
时间 间隔
调度 一些
命令 的
执行 。
在 /etc 目录下有一个 crontab 文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度 crontab。 crontab 三种形式的 命令行结构 : crontab [-u user] [file] 第一个命令行中,file 是命令文件的名字。如果在命令行中指定了这个文件,那么执行 crontab 命令,则将这个文件拷贝到 crontabs 目录下;如果在命令行中没有制定这个文件,crontab 命令将接受标准输入(键盘)上键入的命令,并将他们也存放在 crontab 目录下。 crontab [-u user] [-e|-l|-r] 命令行中 -r 选项的作用是从 /usr/spool/cron/crontabs 目录下删除用户定义的文件 crontab。 crontab -l -u [-e|-l|-r] 命令行中 -l 选项的作用是显示用户 crontab 文件的内容。 使用命令 crontab -u user -e 命令编辑用户 user 的 cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。 执行命令crontab -u user -r 即可删除当前用户的所有的 cron 作业。 作业与它们预定的时间储存在文件 /usr/spool/cron/crontabs/username 里。username 使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包 含以 spaces 和 tabs 分割的六个域。 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了 crontab 调度执行的命令。 第一道第五个字段的整数 取值范围 及 意义 : 0~59 表示分 1~23 表示小时 1~31 表示日 1~12 表示月份 0~6 表示星期(其中 0 表示星期日) /usr/lib/cron/cron.allow 表示谁能使用 crontab 命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件 /usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用 crontab 命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时 cron.allow 优先,如果都不存在,只有超级用户可以安排作业。 ------------------------------------------------------------------------------------------------------------------------------------ crontab 是一个很方便的在 unix/linux 系统上定时(循环)执行某个任务的程序 使用 cron 服务,用 service crond status 查看 cron 服务状态,如果没有启动则 service crond start 启动它。 cron 服务是一个定时执行的服务,可以通过 crontab 命令添加或者编辑需要定时执行的任务: crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除没个用户的cron服务 crontab -e //编辑某个用户的cron服务 比如说root查看自己的cron设置:crontab -u root -l 再例如,root想删除fred的cron设置:crontab -u fred -r 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e 进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt 编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。 需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上 service crond start 如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。 比如: service mysqld start 基本用法: 1. crontab -l 列出当前的crontab任务 2. crontab -d 删除当前的crontab任务 3. crontab -e (solaris5.8上面是 crontab -r) 编辑一个crontab任务,ctrl_D结束 4. crontab filename 以filename做为crontab的任务列表文件并载入 crontab file的格式: crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间 分钟 (0-59) 小时 (0-23) 日期 (1-31) 月份 (1-12) 星期几(0-6,其中 0 代表星期日) 第 6 个字段是一个要在适当时间执行的字符串 例子: #MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date (solaris 5.8似乎不支持此种写法) #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date #1月份日早上4点 0 4 1 jan * date 补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export) (1)先建一个文件crond.txt如下, 每天早上5点36分重新启动 36 5 * * * reboot (2)上传到/opt目录 (3)运行命令 crontab /opt/crond.txt crontab -l 让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。 在Fedora 和Redhat中,我们应该用; # /etc/init.d/crond restart 如果让crond 在开机时运行,应该改变其运行级别; # chkconfig --levels 35 crond on service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。 Crontab 文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中: minutes(M): 分钟域,值的范围是0到59 hours(H): 小时域,值的范围是0到23 day of month(D): 日期,值的范围是1到31 month(m): 月份,值的范围是1到12 day of week(d): 星期,值的范围是0到6,星期日值为0 command: 所要运行的命令 如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。 如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。 如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。 如果日期域和星期域都有值,则这两个域都有效。 编写一个文件,用以启动自动备份进程。 cd /opt touch reboot.txt 在 reboot.txt 中添加一下内容: 0 4 * * * reboot crontab /opt/reboot.txt 用crontab -e编辑定时操作,例如加入下行命令: 用crontab -l命令来查看 注意:需要启动服务(添加在rc.local中) 重启 crond 任务 /etc/init.d/cron restart (ubuntu下) 第一种 在 Fedora 或 Redhat 等以RPM包管理的系统中; # /etc/init.d/crond start # /etc/init.d/crond stop # /etc/init.d/crond restart /etc/rc.d/init.d/crond restart 命令简介 crontab-操作每个用户的守护程序和该执行的时间表。 部分参数说明 crontab file [-u user]-用指定的文件替代目前的crontab。 crontab-[-u user]-用标准输入替代目前的crontab. crontab-l[user]-列出用户目前的crontab. crontab-e[user]-编辑用户目前的crontab. crontab-d[user]-删除用户目前的crontab. crontab-c dir- 指定crontab的目录。 crontab文件的格式:M H D m d cmd. M: 分钟(0-59)。 H:小时(0-23)。 D:天(1-31)。 m: 月(1-12)。 d: 一星期内的天(0~6,0为星期天)。 cmd 要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。
==================================
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: 1.crontab命令选项: 3.记住几个特殊符号的含义: 任务调度设置文件的写法 添加后保存的路径是/var/spool/cron,可以用vi查看修改,这个不难
======================================
参考:
http://www.chinaunix.net/jh/6/271992.html |