Linux中定时任务cron和crontab命令配置规则

  Linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外,由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab命令。

  Linux中有分为系统任务和用户任务,系统任务是针对系统周期性的进行的任务,对于这些在进行修改的时候需要谨慎,在用户任务中是为了避免用户在修改的时候出现错误,从而影响系统而设置的,提供进行修改的地方。

  /ect/corntab文件是系统任务,在改文件进行的修改会在所以用户下生效,使用者权限文件(用户任务文件):/etc/cron.deny(该文件中所列用户不允许使用crontab命令);/etc/cron.allow(该文件中所列用户允许使用crontab命令);/var/spool/cron/(所有用户crontab文件存放的目录,以用户名命名)

2、安装crontab:

正常都是已经安装的,如果没有使用yum安装

  yum install crontabs

服务操作说明:

  systemctl start crond.service      //启动服务

  systemctl stop crond.service    //关闭服务

  systemctl restart crond.service  //重启服务

  systemctl reload crond.service  //重新载入配置

  systemctl status crond.service  //查看服务

查看crontab服务是否已设置为开机启动,执行命令:

  ntsysv

在选项中前面有x的都是表示已经加入开机自动启动。

加入开机自动启动:

  chkconfig –level 35 crond on

3、crontab文件写法

/etc/crontab开头都是:

  SHELL=/bin/bash

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

  MAILTO=HOME=root

在文件中会有一段注释大概的意思就说如下图:

Linux中定时任务cron和crontab命令配置规则

 

根据自己的需要在文件下方写下需要进行定时的功能就可以。例如:我在文件中加入:

    * */1 * * * root /etc/cron.hourly/check-core-dir

意思是在每个小时定期执行存放在/etc/cron.hourly中的check-core-dir这个脚本,其他的类似的做法,当然也可以执行第几个小时进行执行,只需要把/去掉。

cron机制
        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制

crontab参数
        -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab
        crontab -u 使用者名称

-l:可以列出crontab的内容

-r:可以移除crontab

-e:可以使用系统预设的编辑器,开启crontab

-i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

crontab时间格式说明
        minute(分)可以设置0-59分

hour(小时)可以设置0-23小时

day of month(日期)可以设置1-31号

month(月份):可以设置1-12月

day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,或者我们也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一等等

crontab时间格式范例
    1-3表示123
    1-9/2表示13579

 crontab范例
    每五分钟执行  */5 * * * *

每小时执行    0 * * * *

每天执行        0 0 * * *

每周执行      0 0 * * 0

每月执行        0 0 1 * *

每年执行      0 0 1 1 *

设定cron的权限
        /etc/cron.allow
        /etc/cron.deny

系统首先判断是否有cron.allow这个文件,如果有这个文件的话,系统会判断这个使用者有没有在cron.allow的名单里面,如果在名单里面的话,就可以使用cron机制。如果这个使用者没有在cron.allow名单里面的话,就不能使用cron机制。

如果系统里面没有cron.allow这个文件的话,系统会再判断是否有cron.deny这个文件,如果有cron.deny这个文件的话,就会判断这个使用者有没有在cron.deny这个名单里面,如果这个使用者在cron.deny名单里面的话,将不能使用cron机制。如果这个使用者没有在cron.deny这个名单里面的话就可以使用cron机制。

如果系统里这两个文件都没有的话,就可以使用cron机制

介绍crontab文件
        /etc/crontab
        在这个文件里并没有记录系统要执行哪些工作,而是记录了下面四个子目录。
        /etc/cron.hourly
        /etc/cron.daily
        /etc/cron.weekly
        /etc/cron.monthly
        这些子目录里存放了一些脚本,到了crontab所指定的时间点,系统就会去执行这些子目录里的脚本。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12171.html