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文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

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没有马上的执行起来,那么你可以用 service crond 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 * * * * command
 7点到10点的第10,50分钟执行  10,50 7-10 * * * command
 每隔一天的7点到11点的第20和第40分钟执行  20,40 7-11 */1 * * command
 每周一的7点到11点的第25和第50分钟执行 25,50 7-11 * * 1 command
 每天的3:30执行  30 3 * * * command
 每月1、10、20日的3 : 30执行  30 3 1,10,20 * * command
 每周六、周日的3 : 30执行

30 3 * * 6,0 command

30 3 * * 6,7 command

 每天9点到16点之间每隔15分钟执行  /15 9-16 * * * command

& 后台执行命令

* * * * * command &

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。

可以把输出接口放到某一个温江中

2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做log.file 的文件中

command >log.file 2>&1 &

CentOS下查看crontab执行历史记录

在crontab中添加了定时任务,但发现没有得到期望的结果,因而怀疑是crontab没有执行相应的任务,这是我们可以查看一下日志

cd /var/log

tail -100 cron

[linux]解析crontab的更多相关文章

  1. 【转】PHP计划任务:如何使用Linux的Crontab执行PHP脚本

    转:https://www.centos.bz/2011/03/auto-run-task-crontab/ 我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是 ...

  2. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  3. Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件

    点击进入:Window bat expdp 定时任务逻辑备份 定时删除N天前的旧文件 创建sh脚本 [oracle@localhost ~]$ vi logicbackup.sh 添加脚本内容 #!/ ...

  4. 如何使用Linux的Crontab定时执行PHP脚本的方法

    我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...

  5. linux定时任务crontab

    今天在执行mysql定时任务语句时候问了很多大拿,都建议我不要随便在生产环境下写定时任务这样的语句,有的说会有延时,那样的话就不准了,有的说在.系统时间和本地时间不一致怎么办?后来就建议我用linux ...

  6. Linux 命令 - crontab: 任务调度

    cron 是一个 Linux 下的定时执行工具,可以在无需人工干预的情况下运行作业.守护进程 cron 会读取 crontab 文件,根据配置在指定的时间执行任务.contab 命令用来添加.删除.显 ...

  7. linux使用crontab -e 遇到No space left on device

    今天用linux的crontab -e编辑定时脚本的时候.遇到No space left on device的错误. 网上找了半天终于知道原因了,昨天晚上我的一个任务因为路径没写对,到时crontab ...

  8. PHP计划任务:如何使用Linux的Crontab执行PHP脚本

    我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...

  9. linux定时任务crontab的设置

    linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...

随机推荐

  1. Java的xml与map,与Bean互转

    xml与map互转,主要使用dom4j import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j. ...

  2. K/3 Cloud移动BOS开发技巧 -- K/3 Cloud多数据中心时如何支持发布到云之家.

    我们知道K/3 Cloud和云之家进行集成,在管理中心里面有个设置,移动账套启用,只能支持一个账套启用那么能不能支持两个账套部署到云之家中呢?其实移动BOS平台默认是支持,答案就在发布到云之家的菜单中 ...

  3. 数组,arrayList和List

    数组,arrayList和List (1)数组在C#中是最早出现的.它在内存中是连续的存储的,所以索引速度很快,而且赋值与修改元素也很简单.可以利用偏移地址访问元素,时间复杂度为O(1);可以用折半查 ...

  4. STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

    参考资料:1.ST HAL库官网资料 2.https://blog.csdn.net/u014470361/article/details/79206352#comments 一.STM32CubeM ...

  5. 关于数据库连接时URL的问题

    最近在写一个简单的增删改查的代码时,遇到保存的中文都会变成问号(?),由于刚开始只是一些数据的保存,所以认为之后只要对数据库的编码进行修改即可,但是后来要对数据进行查找的时候发现根本查找不到, 当时用 ...

  6. openXML设置Excel行组合

    重要代码: row = new DOS.Row() { RowIndex = new DOX.UInt32Value(rowIndex), Spans = new DOX.ListValue<D ...

  7. memcache启动报错:memcached: error while loading shared libraries: libevent-XXXXX5: cannot 。。。。

    创建连接 ln -s /usr/lib/libevent-2.1.so.6  /usr/lib/libevent-2.1.so.6 如果还不行就下面解决 执行下面语句查看链接地址 LD_DEBUG=l ...

  8. Android开发者的Anko使用指南(二)之Dialogs

    在项目中使用Anko Dialogs dependencies { compile "org.jetbrains.anko:anko-commons:$anko_version" ...

  9. unigui 1.90.0 Example

    Example//-------------------------------------1:[UNG-2783] - ReCaptcha -------//无法显示 //------------- ...

  10. 2018年3月24日上海MVP线下技术交流活动简报

    2018年3月24日下午,几位上海MVP自发组织了一次线下的技术交流会,主要由MVP胡浩牵头,我(陈晴阳).刘鑫.朱兴亮和胡浩各自做了一次主题演讲,具体主题是: 陈晴阳:<这还是我认识的Visu ...