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定时任务详解的主要内容,如果未能解决你的问题,请参考以下文章