CronTab简介

来源:互联网 发布:小翡君改号手机软件 编辑:程序博客网 时间:2024/05/21 18:45

计划任务——Crontab

Crontab是一个用于设置周期性被执行的任务的工具。

  • Cron Job:被周期性执行的任务我们称为Cron Job
  • Cron Table:被周期性执行的任务组成的列表,我们称为Cron Table

第一部分:Ubuntu安装cron

apt-get install cron

不论之前是否安装过,这里都可以使用service来查看:

service --status-all | grep cron

或者查看详细信息以及日志信息:

service cron status

第二部分:设置Cron Table:crontab -e

然后就会显示下面的图片内容:

这个时候就是输入模式,可以直接输入。在编辑完成后要退出的话,可以先点击 Esc 键,接着按照最下面的提示符来执行命令,提示符中的 ^ 表示 Alt,例如离开就是Alt X,按下后如果有修改,那么会询问你是否愿意保存修改,如下面所示:

接着会询问你要保存的文件:

这里直接敲 Enter 就可以保存退出了。

第三部分:查看上面修改的那个文件内容:crontab -l

第四部分:Cron Table设置格式:* * * * * 命令

这里前面的五个 * 表示时间,从左到右分别代表

  • 分钟:0-59
  • 小时:2-23
  • 日期:1-31
  • 月份:1-12
  • 星期:1-7(0) #0也表示星期天

也就是下面的顺序

分钟 小时 日期 月份 星期数 命令

例1:30 21 * * * service apache2 restart

这里就表示每晚的21:30使用service命令重启apache2。

例2:45 4 1,10,22 * * service apache2 restart

这里表示每月的1号,10号,22号的4:45,重启apache2。与例子的区别在于,当要设置多个值时,只需要使用 , 隔开即可。

例3:45 4 1-10 * * service apache2 restart

这里表示每月的1号**到**10号,每天都在4:45,重启apache2。与例2不同的是,当要设置多个连续值的时候,可以使用-。

例4:/2 * * * service apache2 restart

这里表示每2分钟,重启一次apache2服务。与上面都不同的是,如果直接写

2 * * * * service apache2 restart

则表示在每小时的第2分钟时重启apache2。

这里把两者结合一下:

1-59/2 * * * * service apache2 restart

表示在每小时中,每2分钟执行一遍apache2重启命令。

例5:0 23-7/1 * * * service apache2 restart

这里的含义是在每天的晚上23:00到第二天的早上7:00之间,每1个小时重启一边apache2。这里我们可以看出,如果有一个设定中前一个设定小于后一个设定,如23-7中的23>7,那么也就意味着,下一次计时的时间,如这里是第二天。

例6:0,30 18-21 * * * service apache2 restart

表示每天的18:00,18:30,19:00,19:30,20:00,20:30,21:00,重启apache2,换一种说法就是在18:00-21:00之间,每隔半个小时重启一遍apache2。

换一种写法也是可以的:

0-59/30 18-21 * * * service apache2 restart

作用是一样的。

总结

    • 表示任何时间都匹配
  • A,B,C 表示A或者B或者C时匹配
  • A-C表示A到C之间匹配
  • */A 表示每A的时间都匹配

第五部分:cron日志文件:/var/log/cron.log

如果在本路径下没有找到该日志文件,那么就要修改一个设定值:

vim /etc/rsyslog.d/50-default.conf

这个目录文件我猜他全名应该是:record-system-log,是rsyslog服务的配置文件。表示存储者系统的日志文件,在这里目录下的那个文件中修改一个设定:

#cron.*                          /var/log/cron.log

把前面的#去掉,就能开启cron的日志了。在修改配置后要想执行就要重启rsyslog服务。

service rsyslog restartservice cron restart

顺道把cron服务也重启一遍吧。这之后我们来实际尝试一下crontab。

第六部分:crontab实例

<!--配置crontab-->    crontab -e

在最后部分按照上面的教程添加一个易于查看结果的命令:

*/1 * * * * echo"one minute“

之后就保存退出,去查看日志文件:

tail -f /var/log/cron.log<!-- tail -f 表示一直刷新该文件,并且显示文件最后内容--><!--可以按 ctrl C 进行退出-->

下面的就是输出结果:

Feb 16 13:59:01 yang-ThinkPad-Edge-E445 CRON[10025]: (root) CMD (echo "one minute" )Feb 16 13:59:01 yang-ThinkPad-Edge-E445 CRON[10024]: (CRON) info (No MTA installed, discarding output)Feb 16 14:00:01 yang-ThinkPad-Edge-E445 CRON[10040]: (root) CMD (echo "one minute" )Feb 16 14:00:01 yang-ThinkPad-Edge-E445 CRON[10039]: (CRON) info (No MTA installed, discarding output)Feb 16 14:01:01 yang-ThinkPad-Edge-E445 CRON[10049]: (root) CMD (echo "one minute" )Feb 16 14:01:01 yang-ThinkPad-Edge-E445 CRON[10048]: (CRON) info (No MTA installed, discarding output)Feb 16 14:02:01 yang-ThinkPad-Edge-E445 CRON[10066]: (root) CMD (echo "one minute" )Feb 16 14:02:01 yang-ThinkPad-Edge-E445 CRON[10065]: (CRON) info (No MTA installed, discarding output)Feb 16 14:03:01 yang-ThinkPad-Edge-E445 CRON[10084]: (root) CMD (echo "one minute" )Feb 16 14:03:01 yang-ThinkPad-Edge-E445 CRON[10083]: (CRON) info (No MTA installed, discarding output)

注意时间,每一分钟执行一次,运行命令 echo “one minute”,后面的命令是因为我没有把输出正确输出而已。

0 0
原创粉丝点击