[linux]解析crontab

本文发布时间: 2019-Mar-22
linux提供了一个非常强大而且又比较好用的命令 [crontab]crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果我要linux定时去执行某个脚本或者定时某个http请求,可以用crontab来实现如下 我用cron去定时发送一个http请求默认情况下,任何使用者只要不被列入/etc/cron.deny当中,那么他就可以直接下达『crontab -e』去编辑自己的例行性命令了!整个过程就如同上面提到的,会进入 vi 的编辑画面, 然后以一个工作一行来编辑,编辑完毕之后输入『:wq』储存后离开 vi 就可以了!如果你要每5分钟运行数据同步的脚本,同样可以用crontab -e 然后编辑按照规定的格式写即可.白天是高峰期,晚上用户不多,是低峰期,我们补数据会占用大量带宽,尤其是白天,会影响正常业务,一般的运维人员在对服务器有大的操作的时候都会实现吧脚本写好,然后设定在凌晨的时候执行指定的脚本就可以了.crontab的语法crontab [-u username] [-l|-e|-r]选项与参数:-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;-e :编辑 crontab 的工作内容-l :查阅 crontab 的工作内容-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑查询目前的定时任务如果想删除某一个crontab任务,就删除某一行就可以了/etc/crontab配置文件讲解我们可以看一看 linux中 /etc/crontab前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。crontab的格式讲解用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minutehourdaymonthweekcommand其中:minute:表示分钟,可以是从0到59之间的任何整数。hour:表示小时,可以是从0到23之间的任何整数。day:表示日期,可以是从1到31之间的任何整数。month:表示月份,可以是从1到12之间的任何整数。week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。上图已经表示很明确了. 每个*代表的意义..在这里还有一点是需要注意的是几个特殊的符号含义特殊字符代表含义*(星号)代表任何时刻都接受的意思,*代表的是任何时候,(逗号)代表分隔字段的意思例如: 15,30,45 * * * * command 代表的是每月每日每小时的15分,30分,45分的时候执行命令-(减号)代表一段时间范围内例如: 10 7-10 * * * command 代表的是每月每日的7点到10点的10分整时执行命令/n  那个 n 代表数字,也就是每隔 n 单位间隔的意思例如 /5 * * * * command 代表的是每月每日每时每个5分钟执行一次crontab的原理当使用者使用 crontab 这个命令来创建工作排程之后,该项工作就会被纪录到/var/spool/cron/里面去了,而且是以帐号来作为判别的喔!举例来说, css使用 crontab 后, 他的工作会被纪录到/var/spool/cron/css 中,但请注意,不要使用 vi 直接编辑该文件, 因为可能由于输入语法错误,会导致无法运行 cron 喔!另外, cron 运行的每一项工作都会被纪录到/var/log/cron这个登录档中.crond服务的最低侦测限制是分钟,所以 cron 会每分钟去读取一次/etc/crontab与/var/spool/cron里面的数据内容 ,因此,只要你编辑完 /etc/crontab 这个文件,并且将他储存之后,那么 cron 的配置就自动的会来运行了,如果你修改完的crontab或者添加的crontab没有马上的执行起来,那么你可以用 servicecrond restart来重启.看看/etc/下的所有cron的目录特别注意的是/etc/cron.deny 该文件中所列用户不允许使用crontab命令/etc/cron.allow 该文件中所列用户允许使用crontab命令最好是对crontab命令进行备份,因为 crontab -e 和crontab -r 中一个是写入 一个是删除,而e和r又相离很近,所以要注意这一点,很容易误删crontab这个文件.举几个实例吧,这样方便大家能够更加容易的了解实例每1分钟执行一次*****command/1 * * * * command每小时的第15,30,45分钟执行15,30,45 ****command7点到10点的第10,50分钟执行10,20 7-50 ***command每隔一天的7点到11点的第20和第40分钟执行20,40 7-11*/1**command每周一的7点到11点的第25和第50分钟执行25,50 7-11**1command每天的3:30执行303***command每月1、10、20日的3:30执行30 31,10,20** command每周六、周日的3:30执行303**6,0command303**6,7command每天9点到16点之间每隔15分钟执行/15 9-16 * * * command& 后台执行命令* * * * * command &当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。可以把输出接口放到某一个温江中2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做log.file 的文件中command>log.file2>&1 &CentOS下查看crontab执行历史记录在crontab中添加了定时任务,但发现没有得到期望的结果,因而怀疑是crontab没有执行相应的任务,这是我们可以查看一下日志cd /var/logtail -100 cron


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表