crontab

一、cron服务

cron是一个linux的定时执行工具,可以在无需人工干预的情况下运行作业。

service crond start   //启动服务

service crond stop    //关闭服务

service crond restart  //重启服务

service crond reload  //重新载入配置

service crond status  //查看服务状态 

 

来自 <http://www.cnblogs.com/longjshz/p/5779215.html>

 

二、cron3个地方查找配置文件:

1/var/spool/cron/这个目录下存放的是每个用户包括rootcrontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

 

 

三、/etc/crontab这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab

 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

 

# For details see man 4 crontabs

 

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 -23)

# |  |  .---------- day of month (1 - 31)

# |  |  | .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  | |  .---- day of week (0 - 6)(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  | |  |

# *  *  * *  * user-name command to beexecuted

 

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

 

  • MAILTO=root:是说,当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?由于 root并无法再用户端收信,因此,我通常都將这个 e-mail改成自己的账号,好让我随时了解系统的状态!
  • 01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root,这一行代表的是『执行的级别为root身份』当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内(/etc/cron.hourly)的所有可执行文件』,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!

 

四、/etc/cron.d/这个目录用来存放任何要执行的crontab文件或脚本。

 

六、创建cron脚本

第一步:写cron脚本文件,命名为crontest.cron

15,30,45,59 * * * * echo"xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 

第二步:添加定时任务。执行命令 crontab crontest.cron”。搞定 

第三步:"crontab-l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

这时创建的任务脚本放到/etc/cron.d/目录下

 

七、crontab用法 

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。

   每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

 

  在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

   每个域之间使用空格或者制表符分隔。格式如下: 

minute hour day-of-month month-of-yearday-of-week commands 

   合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

   除了数字还有几个个特殊的符号就是"*""/""-"","*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

 

    -l在标准输出上显示当前的crontab。 

-r 删除当前的crontab文件。 

-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装

 

 

八、例子: 

每天早上6点 

0 6 * * * echo "Good morning.">> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都emailroot的信箱了。

 

每两个小时 

0 */2 * * * echo "Have a breaknow." >> /tmp/test.txt  

 

晚上11点到早上8点之间每两个小时和早上八点 

0 23-7/28 * * * echo "Have a good dream" >> /tmp/test.txt

 

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

0 11 4 * 1-3 command line

 

每天的下午4点、5点、6点的5 min15 min25 min35 min45 min55 min时执行命令。 

51525354555 161718 * * * command

你可能感兴趣的:(Linux)