Keep looking Donot settle
分类: LINUX
2016-11-16 17:08:48
原文地址:细说crontab 赠anacron 作者:xiaozhenggang
crontab
以行为单位,前面六个字段用空格分开。
Minute(0-59) hour(0-23) day(1-31) month(1-12) weekday(0-6) [username] command
#SHELL,PATH,MAILTO,不多解释,都懂的哈,呵呵
#username只会出现在/etc/crontab及/etc/cron.d下的文件里。它指明哪个command用哪个user来执行!其它地方如/var/spool/cron里就没有必要指定username字段啦,每个用户都有一个特定的文件夹的。
其它辅助字符
字符 |
意义 |
*(星号) |
表示任何时刻都接受!ex:59 23 * * * command表示在每天的23:59执行commad |
,(逗号) |
分隔时段,ex:0 3,6,9 * * * command,表示在每天的3:00,6:00,9:00执行command |
-(减号) |
时间段;ex:0 8-17 * * * command,表示在每天的8:00到17:00执行commmand |
/n(斜杠) |
n 为整数,/n表示每隔n分钟执行相关命令;ex:*/5 * * * * command,表示每隔五分钟执行一次command |
#周与日月不可同时并存,若存在,则两者都会匹配!
如 1 1 1 1 1 fedora echo “HAHAHAHAHA”,你认为它会怎样被执行?在每年的1月1号执行echo命令或者在每周一执行echo命令!不要以为它会在每年的1月1号且为星期一的时候才会被执行!
#对于一般用户用crontab命令就行了,不过对于系统级的作业直接编辑/etc/crontab就是啦!
下面 man crontab:
SYSNOPSIS
crontab [-u user] file
crontab [-u user] [-l|-r|-e|] [-i] [-s]
DESCRIPTION
crontab就是一个用来安装(添加)、移除或者列出那些存在表(ex./etc/crontab)里的用于驱动cron的程序.每个用户都可以有自己的crontab,存放/var/spool/中,它们一般不会被直接编辑。
你可以允许或禁止用户执行计划任务。通常都有两个文件 cron.allow及cron.deny,从字面意思就知道它们是干吗的啦!cron.allow里面的账户都能使用crontab,否则不能;cron.deny里的账户是不能使用crontab的,否则均能!以免混淆,建议只保留一个文件! cron.allow的优先级高于cron.deny;如果两者都不存在,那么只有root用户才能使用crontab.
OPTIONS
-u 只有root才能执行这个任务,即帮其他用户建立或移除crontab计划工作
-l 打印crontab的计划任务内容
-r 移除crontab的内容
-e 编辑crontab的内容
-i 显示提示信息,比如怀-r一起使用时会给出’y/Y’的提示
EXAMPLE
[root@kingdom cron]# crontab -e
#用fedora的身份在每天的12:00给自己发一封邮件,内容为.bashrc
0 12 * * * mail fedora –s “at 12;00”
#在每年的2月13号零点给老婆发一封情书,别每年都发一样的喔!切记!
0 0 13 2 * mail
#在每天23:59关机
59 23 * * * /sbin/shutdown –h now
#对于上面提到的crontab,如果我们的机器不是7*24在线的话,那么它要怎么完成它的工作?这是个问题,不过已经有人解决啦――anacron! anacron 并不能指定何时执行某项任务, 而是以天为单位或者是在开机后立刻运行 anacron 的动作,它会去侦测停机期间应该运行但是并没有运行的 crontab 任务,并将该任务执行一遍后,anacron 就会自动停止了。anacron 会以一天、七天、一个月为期去侦测系统未运行的 crontab 任务,anacron会去分析现在的时间与时间记录文件所记载的上次执行 anacron 的时间,两者比较后若发现有差异, 那就是在某些时刻没有运行 crontab !此时 anacron 就会开始执行未运行的 crontab 任务! 所以 anacron 其实也是透过 crontab 来运作的!
现在我们来看看这个anacron的相关选项:
anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [-S spooldir] [job]
anacron [-S spooldir] –u [-t anacrontab] [job]
anacron [-V|-h]
anacron –T [-t anacrontab]
选项:
-f 强制执行相关作业,忽略时间戳
-u 只更新相关作业的时间戳,不再执行任何作业
-s 顺序执行作业;在前一个作业未完成前不会开始下一个作业
-n 现在、立刻、马上、执行作业!
-d 不在后台创建子进程。在这个模式下,acron会将相关信息输出到标准错误流及
Syslog,而作业的输出不受影响
-q 禁止将信息输出到标准错误流,与-d选项合用
-t some_anacrontab
使用指定的anacrontab而不是默认的anacrontab(/etc/anacrontab)
-T 测试anacrontab中是否有错误;若有则提示错误并返回1否则返回0
-S spooldir
指定时间戳的存放地点spooldir;适用于那些想手动定制anacron的用户
-V 打印版本信息并退出
-h 打印简短的帮助信息并退出