当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux Crontab 介绍

    栏目:Linux/apache问题 时间:2019-10-12 16:18

    crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

    Crontab是什么

      我总是喜欢将一些特别专业的词汇翻译成比较浅显易懂的词语,可能并不是很准确,但是我觉得更便于理解。

      按照前人的解释,cron是系统主要的调度进程,可以在非人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。简单来说,当我们需要让系统执行一个定时任务时,我们就会用到它,比如定时重启tomcat,或者定时调用一个jar包来执行某项功能等。

    1.Cron的启动与关闭

    由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务:

    /sbin/service crond start      //启动服务
    /sbin/service crond stop      //关闭服务
    /sbin/service crond restart    //重启服务
    /sbin/service crond reload     //重新载入配置

    2.Cron配置文件

    2.1全局配置文件

    crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件.

    cron.daily是每天执行一次的job,cron.weekly是每个星期执行一次的job.cron.monthly是每月执行一次的job,cron.hourly是每个小时执行一次的job.cron.d是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面.

    /etc/crontab文件一般如下:

    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

    我们可在此文件中添加自己需要的cron job.

    /etc/cron.deny文件就是用于控制不让哪些用户使用Crontab的功能.

    2.2用户配置文件

    每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.

    linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.

    3.Cron命令格式

    crontab [ -u user ] 文件 
    crontab [ -u user ] { -l | -r | -e }
    -u:指定某一用户
    -e:执行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi.
    -r:删除用户时程表.
    -l:列出用户时程表.

    4.Cron文件格式

    *  *  *  *  *  command

    分 时 日 月 周   命令

    第1列表示分钟1~59, 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    5.Cron文件使用说明

    5.1 一般情况

    当f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推.

    * * * * * /bin/usershell  每天每分钟执行一次/bin/usershell
    当f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推.