Linux Crontab 介绍
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρνο),原意是时间。常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cronjobs。
Crontab是什么
我总是喜欢将一些特别专业的词汇翻译成比较浅显易懂的词语,可能并不是很准确,但是我觉得更便于理解。
按照前人的解释,cron是系统主要的调度进程,可以在非人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。简单来说,当我们需要让系统执行一个定时任务时,我们就会用到它,比如定时重启tomcat,或者定时调用一个jar包来执行某项功能等。
1.Cron的启动与关闭
由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务:
/sbin/servicecrondstart//启动服务 /sbin/servicecrondstop//关闭服务 /sbin/servicecrondrestart//重启服务 /sbin/servicecrondreload//重新载入配置
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****rootrun-parts/etc/cron.hourly 024***rootrun-parts/etc/cron.daily 224**0rootrun-parts/etc/cron.weekly 4241**rootrun-parts/etc/cron.monthly
我们可在此文件中添加自己需要的cronjob.
/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[-uuser]文件 crontab[-uuser]{-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小时都要执行,其余类推.
0-12****/bin/usershell 每天每小时从0到12分钟每分钟执行一次/bin/usershell
当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推.
**/2***/bin/usershell 每天每2小时执行一次/bin/usershell
当f1为a,b,c,...时表示第a,b,c,...分钟要执行,f2为a,b,c,...时表示第a,b,c...个小时要执行,其余类推.
*1,3,5,7***/bin/usershell 每天每逢1,3,4,7点执行一次/bin/usershell
5.2.冲突逻辑
日期可以用月限定,也可以用“星期”指定,如果两个段有冲突,那么,第六段的命令将在匹配任何一个的情况下都运行,比如
"3041,15*5",将在每月的1号和15号加每个周五,上午4:30运行.
5.3.符号"%"
"%"在Cron文件中,有"结束命令行","换行","重定向"的作用,假如不需要"%"的特殊作用,需要使用转义符转义.
5.4.@reboot
这个不需要理解,为了达到在开机后运行,且只运行一次的目的.除了这个,也无法通过前五段的设置来实现.
@annually也是这个功能.
至于@yearly,@monthly等等其实都可以用上面的五段来设置.
以上所述是小编给大家介绍的Crontab知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!