1、简介

crontab用于设置周期性被执行的命令
Linux系统中Linux调动工作分为两大类:
  1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
/etc/crtontab
  系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序,通过命令cat crontab查看
  这些任务会在系统运行起来自动调用
/var/spool/cron
  每个用户都会生成自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下
  执行命令crontab -r 就会删除当前用户的crontab文件。例如你切换到suifeng账号下,执行了该命令,那么/var/spool/cron/suifeng文件就会删除,如果要创建该文件只需要用crontab -e命令即可。
  注意,普通用户一般没有权限访问/var/spool/cron
/etc/crontab.deny文件与/etc/crontab.allow文件
  1、分别表示不能使用crontab命令的用户、以及能够使用crontab命令的用户
  2、两个文件同时存在crontab.allow文件优先
  3、两个文件都不存在则只有root用户才拥有调用该命令
 

2、语法

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
各个参数说明:
  1. -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 vi(可以指定别的用户,但是必须拥有权限)
  2. -r [UserName]: 删除目前的时程表
  3. -l [UserName]: 列出目前的时程表
  4. -v [UserName]:列出用户cron作业的状态
创建定时任务
  crontab -e进入文本(vi)编辑状态
  * * * * * command path  // 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
(可将命令写入.sh脚本文件中,并赋予可执行的权限即可)
调度命令的规则:
字段名称 说明 取值范围
分钟 每小时的第几分钟执行 0-59
小时 每日的第几个小时执行 0-23
日期 每月的第几天执行 1-31
月历 每年的第几月执行 1-12
星期 每周的第几天执行 0-6
命令名称 欲执行的命令及参数  
crontab命令中的一些常用特殊符号:
符号 说明
* 表示任何时刻
, 表示分割
表示一个段,如第二段里: 1-5,就表示1到5点
/n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
查看定时任务:crontab -l
删除定时任务:crontab -r
 

3、使用示例

实例1:
  每1分钟执行一次command
  命令:* * * * * command
实例2:
  每小时的第3和第15分钟执行
  命令:3,15 * * * * command
实例3:
  在上午8点到11点的第3和第15分钟执行
  命令:3,15 8-11 * * * command
实例4:
  每隔两天的上午8点到11点的第3和第15分钟执行
  命令:3,15 8-11 */2 * * command
实例5:
  每个星期一的上午8点到11点的第3和第15分钟执行
  命令:3,15 8-11 * * 1 command
实例6:
  每晚的21:30重启smb 
  命令:30 21 * * * /etc/init.d/smb restart
实例7:
  每月1、10、22日的4 : 45重启smb 
  命令:45 4 1,10,22 * * /etc/init.d/smb restart
实例8:
  每周六、周日的1 : 10重启smb
  命令:10 1 * * 6,0 /etc/init.d/smb restart
实例9:
  每天18 : 00至23 : 00之间每隔30分钟重启smb 
  命令:0,30 18-23 * * * /etc/init.d/smb restart
实例10:
  每星期六的晚上11 : 00 pm重启smb 
  命令:0 23 * * 6 /etc/init.d/smb restart
实例11:
  每一小时重启smb 
  命令:* */1 * * * /etc/init.d/smb restart
实例12:
  晚上11点到早上7点之间,每隔一小时重启smb 
  命令:* 23-7/1 * * * /etc/init.d/smb restart
实例13:
  每月的4号与每周一到周三的11点重启smb 
  命令:0 11 4 * mon-wed /etc/init.d/smb restart
实例14:
  一月一号的4点重启smb 
  命令:0 4 1 jan * /etc/init.d/smb restart
实例15:
  每小时执行/etc/cron.hourly目录内的脚本
  命令:01 * * * * root run-parts /etc/cron.hourly
  说明:run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名
实例16:
  1、每天23点59分后台执行test.sh脚本;并将标准输出写入log.txt中
  命令:59 23 * * * /home/suifeng/scripts/test.sh >/home/suifeng/log.txt &
  2、同上
  命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &
  3、每天23点59分后台执行test.sh脚本;并将错误输出写书log.txt中
  命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &
  4、每天23点59分后台执行test.sh脚本;并将错误输错当做标准输出(即将错误输出和标准输出全部写入log.txt中)
  命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt 2>&1 &
相关说明:
  0表示键盘输入
  1表示标准输出
  2表示错误输出
  &表示后台执行
  >>表示追加
  >表示覆盖写
注意:
  1、当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
  2、需要用户交互的命令不要放在后台执行,因为那样子机器将会在那一直等待
  3、作业在后台运行时,一样会将结果输出在屏幕上,干扰你的正常工作。因此我们最好将输出重定向到某个文件中
 

4、crond服务

通过 chkconfig --list | grep cron 命令来查看cron服务的启动情况:
[root@***** home]# chkconfig --list | grep cron crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
我们可以看到,系统启动级别如果是1-4,cron服务都会开机自动启动的,我们可以通过如下命令来设置该服务的启动项:
  /sbin/service crond start
  /sbin/service crond stop
  /sbin/service crond restart
  /sbin/service crond reload
以上1-4行分别为启动、停止、重启服务和重新加载配置。
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。
查看crontab服务状态:
service crond status
 

5、个人经验总结

  我们使用这个命令大多都是运行相关的脚本文件,最常见的就是定时调用http请求进行数据采集或者数据库的备份等等。因此当我们自己所写的脚本文件中含有文件引入时,最好采用绝对路径,否则将会引入失败从而导致定时任务失败。
 
 

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风   http://www.cnblogs.com/phpstudy2015-6/

原文地址:http://www.cnblogs.com/phpstudy2015-6/p/7534968.html

声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

 

定时任务之crontab命令的更多相关文章

  1. linux定时任务:crontab命令

    crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查 ...

  2. OSX系统添加定时任务 Linux crontab命令 定时执行py 文件 任务

    #输出日志 #将日志输入到2.log文件中无论错误还是正确02 15 * * * . ~/xad/pyenv/xadserver/bin/activate && cd /root/xa ...

  3. Linux 设置定时任务crontab命令

    1.  crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使 ...

  4. linux crontab命令参数及用法详解--linux自动化定时任务cron

    声明:本文转自Linux 安全网,在此基础上加上自己的体会! crontab 命令 如果发现您的系统里没有这个命令,在ubuntu server 中用的是 sudo apt-get install c ...

  5. Linux下crontab命令添加Kettle作业定时任务

    1. 确保作业 $KETTLE_HOME/kitchen.sh -file=/data1/testdata/testkjb.kjb 或转换 $KETTLE_HOME/pan.sh -file=/dat ...

  6. linux系统命令学习系列-定时任务crontab命令

    上节内容复习: at命令的使用 作业:创建一个任务10分钟后关机 at now+10 minutes at>shutdown at><EOT> 本节我们继续来说例行任务管理命令 ...

  7. 【转帖】Linux定时任务Crontab命令详解

    Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...

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

    转自:Linux定时任务Crontab命令详解 (部分修改) linux 定时系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服 ...

  9. Linux 添加定时任务,crontab -e 命令与直接编辑 /etc/crontab 文件

    1. 使用 crontab -e 命令编辑定时任务列表 使用这个命令编辑的定时任务列表是属于用户级别的,初次编辑后在 /var/spool/cron 目录下生成一个与用户名相同的文件,文件内容就是我们 ...

随机推荐

  1. zabbix_server---微信报警

    (1)         企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...

  2. java实现网页爬虫

    接着上面一篇对爬虫需要的java知识,这一篇目的就是在于网页爬虫的实现,对数据的获取,以便分析. -----> 目录:   1.爬虫原理 2.本地文件数据提取及分析 3.单网页数据的读取 4.运 ...

  3. mycat学习心得

    最近老大要求我们学习mycat,并运用到实际项目中.现在简单分享下自己的学习心得,也算是只是积累吧. 什么是mycat? 用我的话理解就是:mycat是一种技术,采用mycat后可以提高程序的速度,也 ...

  4. 【有意思的BUG】未名

    这个帖子描述定位一个BUG的思路. 开始了. 用浏览器访问某一个网址http://111.aaa.com/ ,如果发现提示异常,那么接下来该如何定位BUG呢? 用相同的浏览器去访问不同域(不是aaa. ...

  5. 【有意思的BUG】浏览器的Title和Icon

    序:Icon在术语上也称为"ico",比如豆瓣的ICON地址:http://img3.douban.com/favicon.ico 先贴一张图,有助于理解这篇文档的标题--< ...

  6. 原创:使用脚本获取本机IP地址

    接来下又到了老葵花哥哥开课时间了 今天讲的有些简单 可以是涂鸦之做 也可以是无聊的发呆的杰作 我想取IP地址在大家生活中很常用 今天就给大家介绍我的六种使用脚本取IP地址的方法 很多人想问我 为什么是 ...

  7. OpenStack(企业私有云)万里长征第六步——OpenStack网络及虚拟机存储位置

    一.前言 昨天又装了一遍OpenStack.码农这项工作就如同人生,永远有你想不到的意外在等着你,时而是惊喜时而是悲伤.在装的过程中倒是很顺利,只是在安装完成之后碰到了两个之前没有碰到的问题,这里记录 ...

  8. macvlan 网络隔离和连通 - 每天5分钟玩转 Docker 容器技术(57)

    上一节我们创建了两个 macvlan 并部署了容器,网络结构如下: 本节验证 macvlan 之间的连通性. bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4.即:同 ...

  9. How to make a simplest WCF service work on Win7 with VS2010

    You know as a beginner to learn WCF, the first thing is to make a simplest WCF service work like a c ...

  10. js 小数计算为啥和想象中不一样!

    今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...