Linux 定时任务(cron配置)详细介绍

一、工具/材

SecureCRT   下载地址:https://pan.baidu.com/s/1YB_7BEcJ8MNU3Wj6osnO-g

说明:这里以SecureCRT为实验环境,前面文章也介绍过SecureCRT这里就不赘述了

二、方法/步骤 

    1.cron介绍

在Linux系统中,计划任务一般是由cron承担,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用度工作任务。

    2.安装

要使用cron,需要先安装vixie-cron软件包和crontabs软件包,可以通过以下方式来检查服务器是否有安装

                       rpm -qa | grep vixie-cron    检查是否安装vixie-cron软件包

                       rpm -qa | grep crontabs     检查是否安装crontabs软件包

说明:vixie-cron软件包是cron的主程序。crontabs软件包是用来安装、卸装、或列举用来驱动cron守护进程的表格的程序。

 

如果没有安装软件包,可以通过以下方式联网在线安装

                      yum install vixie-cron

                      yum install crontabs

说明:需要拥有root权限

Linux 定时任务(cron配置)详细介绍_第1张图片

    3.crond服务命令

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

           service crond start    //启动服务

           service crond stop    //关闭服务

           service crond restart  //重启服务

           service crond reload  //重新载入配置

           service crond status  //查看服务状态

    4.加入开机自动启动

chkconfig --level 35 crond on

    5.定时任务配置

cron有两个配置文件,一个是系统cron配置文件(/etc/crontab),是针对系统任务的;一个是用户cron配置文件(/var/spool/cron/USERNAME文件),是针对某个用户的定时任务,通过crontab命令来增删改查;配置其中任意一个都可以(建议使用crontab命令)。

查看配置文件: cat /etc/crontab

                      Linux 定时任务(cron配置)详细介绍_第2张图片

    6.crontab任务配置格式说明

                      Linux 定时任务(cron配置)详细介绍_第3张图片

           *   *  *  *  * command    ☜☜☜一一对应☞☞☞    minute hour day month week command

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如:test.sh)。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段的值如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,3,5,7,8”

短杠(-):可以用整数之间的中杠表示一个整数范围,例如“3-7”表示“3,4,5,6,7

正斜(/):可以用正斜指定时间的间隔频率,例如“0-23/6”表示每六小时执行一次。同时正斜可以和星号一起使用,例如*/1,如果用在hour字段,表示每一小时执行一次。

    7.格式示例说明

例1:每1分钟执行一次command

  命令:* * * * * command

例2:每天的23:30执行一次command

  命令:30,23 * * * command

例3:11月11日11点11分钟执行command

命令:11 11 11 11 * command 

例4:每月212、22日的2 : 22执行一次command 

  命令:22 2 2,12,22 * * command 

例5:凌晨12点到凌晨6点之间,每隔二小时重启ybt 

  命令:* 0-6/2 * * * /etc/init.d/ybt restart

    8.crontab命令

crontab [ -u user ] [ -l | -r | -e ] [ -i ]

-u user:指定管理给定用户的crontab,只有超级管理员用户才能管理,普通用户不能使用此选项;

-l:列出当前用户或者指定用户的crontab到标准输出。

-r:移除当前用户或者指定用户的所有定时任务,即删除/var/spool/cron/USERNAME文件;(危险,没有交互式操作提示)

-e:编辑当前用户的或者指定用户的crontab,如果没有定时任务,会作为一个新的文件编辑,编辑默认是以vi编辑器来编辑,可以通过显式设定VISUAL或EDITOR环境变量来修改使用指定的编辑器来编辑。一但编辑的crontab保存退出后,crontab会自动被安装成定时任务计划。

-i:在使用-r选项移除所有任务时提示用户确认信息;

    9.使用说明

1.先准备一个sh脚本,方便后续测试添加的定时任务,是否生效;例如下面我自己写的一个简单sh脚本,打印输出当前时间和”Hello World”

Linux 定时任务(cron配置)详细介绍_第4张图片

2.在命令窗口输入“crontab -e”,添加定时任务 

  Linux 定时任务(cron配置)详细介绍_第5张图片

           3.在命令窗口输入“crontab -l”,查看定时任务是否已经添加

                      Linux 定时任务(cron配置)详细介绍_第6张图片

           4.在命令窗口输入“chmod +x [执行文件的绝对路径]”,设置可执行权限

          例如:chmod +x /data/test.sh

说明:如果要执行的文件不设置可执行权限,可能会提示/bin/sh: /data/test.sh: Permission denied(拒绝访问)错误,添加的定时任务不会生效

5.测试。在命令窗口输入“cat /var/spool/mail/weblogic”,就可以验证添加的定时任务是否生效

Linux 定时任务(cron配置)详细介绍_第7张图片

备注要点:

1.“cat”命令查看文件的路径以系统提示的路径为准,一般打印输出文件会在/var/spool/mail/目录下

2.添加定时任务要执行的文件路径一定要写绝对路径,否则会提示No such file or directory(没有这样的文件或目录)错误

3.定时任务执行特殊的字符需要进行转义,否则会报错,例如:百分号% 转义 \%

4.如果定时任务脚本中涉及使用到环境变量,必须在脚本中重新定义,不然,定时任务可能识别不了

5.测试定时打印输出的内容不会在命令窗口显示,一般会保存在/var/spool/mail/目录下文件中,前提是设置了允许打印,例如我前面添加的第二个定时任务,因为在后面加了“>/dev/null 2>&1”,所以就不会打印输出结果,其实定时任务已经生效了

*/10 * * * * /data/test.sh >/dev/null 2>&1       每10分钟执行一次/data/目录下test.sh脚本  不打印在任何地方

说明:> 代表重定向到哪里,/dev/null 代表空设备文件,>/dev/null 表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

 

你可能感兴趣的:(Java,Linux,cron,crontab,Java)