crond定时任务详解

Posted xqr2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crond定时任务详解相关的知识,希望对你有一定的参考价值。

首先来了解一下chkconfig这个命令:

chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

  参数:

     --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;

     --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;

       --level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕

等级代号列表:

等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

chkconfig --list             #列出所有的系统服务。

[[email protected] ~]# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

列出系统在每个执行等级中有没有执行crond服务

 

linux定时任务分为两种:

1.系统自身定期执行的任务(系统任务调度)

比如系统日志的轮询、备份系统数据、清除系统缓存等,可以通过vi配置/etc/crontab这个文件,它是一个纯文本文件,当然只有root能配置,修改完之后要通过/etc/init.d/crondrestart重启crond服务

[[email protected] ~]# cat /etc/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,f                                                                                        ri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

2.用户执行的定时任务(用户调度任务)

  1)at:只适合执行一次就结束的突发性调度任务,依赖于服务------atd

  2)anacron:适合非7*24小时开机的服务器,是开机执行的调度任务,开机后会自动检测停机期间该执行而未执行的任务,在开机后一次性执行一遍

  3)crond:一个守护进程(即后台执行的进程),依赖于服务------crond,默认情况下每分钟检查系统中是否有要执行的定时任务,若有,则会根据事先定义好的规则执行这个任务,所以对于秒级的定时任务,crond自身是实现不了的,必须通过方法改进......
    crond与crontab的区别:crond服务是运行的程序,而crontab是用户用来设置定时规则的命令,是一个执行文件------/usr/bin/crontab

    crondtab的语法:

        参数:  

          -u:指定在哪个用户下面编辑定时任务,默认不写为当前用户

          -e:修改定时任务,即ceontab文件的内容

          -l:查看定时任务,即ceontab文件的内容

          -r:移除定时任务,把当前用户的整个crontab文件删掉,一般不用,而是直接-e,取文件里面删除不要的内容

          -i:确认功能

          crontab -l/-e操作的是/var/spool/cron中的当前用户的crontab文件,即

                                                crontab -u root -l/-e == cat/vi /var/spool/cron/root

          当用户创建定时任务后,对应的配置文件会存在于/var/spool/cron/中,文件名与用户名一致

 

    用户的定时任务规则一般分为6列:

      1.minute【0~59]  hour【0~23】  day【1~31】  month【1~12】  week【0~7】  command

      2.week中0和7都为周日,也可以用sun,mon,tue,wed,thu,fri,sat来代替

      3.日和周尽量不要一起用

      4.符号:

* 表示任意时间都 (00 23 * * * cmd:每天23:00执行cmd)
- 时间范围
分割时段的范围
/n

每n个时间单位,前面一般加*(*/5 * * * * cmd :每个五分钟执行一次cmd)

 

 

 

 

 

 

 

 

扩展:

1.我们可以通过编辑 /etc/cron.deny和 /etc/cron.allow 这两个文件控制允许或者不允许文件中的用户使用crontab命令,/etc/cron.allow的优先级比较大,一般使用/etc/cron.deny,把不允许使用crontab命令的用户写进去就行啦

2.所有用户的配置文件默认存放在/var/spool/cron/目录中,文件名以用户名命名

 






以上是关于crond定时任务详解的主要内容,如果未能解决你的问题,请参考以下文章

20160929老男孩运维视频L4-01系统定时任务crond理论详解

crond定时任务详解

Linux的定时任务详解

Linux定时任务Crontab命令详解_转

Linux定时任务Crontab命令详解

Linux定时任务Crontab命令详解