作为一个php码农,linux接触总是很少,但又是必须会的一项技能,今天学到的linux命令是crontab命令。

注:以下总结基于Ubuntu 12.04

去/etc目录下看看

先去Ubuntu的/etc目录下看看,我们都知道/etc目录主要用来存放系统中的配置文件,基本上所有的配置文件都可以在这里找到。运行以下命令看看:

ls /etc/cron*

这个命令会列出/etc目录下所有以cron开头的文件和文件夹。可以看到主要有以下文件夹:

/etc/cron.hourly 这里存放了每小时需要运行的脚本
/etc/cron.daily 这里存放了每天需要运行的脚本
/etc/cron.weekly 这里存放了每个星期需要运行的脚本
/etc/cron.monthly 这里存放了每月需要运行的脚本
/etc/cron.d 如果既不是按小时,也不按天,周和月来运行,就放在这个文件夹

原来,我们可以把我们需要定时运行的脚本放到对应的文件夹中,系统就会定时运行对应的脚本了。那么系统是怎么做到的呢?

/etc目录下,还有一个crontab文件,该文件内容如下:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

如果你英语不错的话,阅读上面的英文注释就可以看懂了。crontab文件是一个系统级别的配置文件,里面配置了什么时候去运行什么文件的规则。Linux会定期去扫描对应的文件夹,运行里面的脚本。这就完成了定时执行任务的功能。

cron服务

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置

cron命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而Linux任务调度的工作主要分为以下两类:

  • 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存;
  • 个人执行的工作:某个用户定期要做的工作,例如每天备份数据库等。

/var/spool/cron/目录下是所有用户的crontab文件,你也可以去看看。上面说到的/etc下的配置都是属于系统级别的,那么个人级别的定时执行如何来做呢?这就需要说到下面的crontab命令了。

crontab命令

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务

如果不指定用户,就是当前系统的登陆用户。

当你输入命令:crontab -e时,就会出现一个文件,让你填写对应的定时规则,这个规则是什么?

定时规则

看这条规则:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

这就是一条规则,表示每天的6点25分执行对应的脚本。没有看明白,不要紧,容我慢慢道来。

以下是 crontab 文件的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
  • minute:区间为0–59;
  • hour:区间为0–23;
  • day-of-month:区间为0–31;
  • month:区间为1–12;1是1月,12是12月;
  • Day-of-week:区间为0–6;周日是0。

除了数字还有以下几个特殊的符号需要特殊说明:
*:代表所有的取值范围内的数字;
/:代表每的意思,”*/5″表示每5个单位;
-:代表从某个数字到某个数字;
,:分开几个离散的数字。

以下举几个例子说明问题:

每五分钟执行    */5 * * * * /home/jelly/test.sh
每小时执行 0 * * * * /home/jelly/test.sh
每天执行 0 0 * * * /home/jelly/test.sh
每周执行 0 0 * * 0 /home/jelly/test.sh
每月执行 0 0 1 * * /home/jelly/test.sh
每年执行 0 0 1 1 * /home/jelly/test.sh 每天早上6点 0 6 * * * /home/jelly/test.sh
每两个小时 0 */2 * * * /home/jelly/test.sh 晚上11点到早上8点之间每两个小时
0 23-7/2 * * * /home/jelly/test.sh 1月1日早上4点
0 4 1 1 * /home/jelly/test.sh

我想这下你应该明白了,如果还没有明白,没问题,再来个实例,你就能明白了。

一个小Demo

先准备以下这么一段简短的脚本:

#!/bin/bash

var="http://www.jellythink.com"

echo $var

exit 0

保存为文件backupDemo.sh。
bash脚本不懂,没关系,看这里:

在终端输入以下命令:

crontab -e

在显示的文件末尾添加以下规则:

*/1 * * * * /home/jelly/MySource/Shell/backupDemo.sh >> /home/jelly/log.log

编辑完成,保存完成以后,就会显示以下提示信息:

crontab: installing new crontab

这就说明正在安装新的定时任务,如果没有这条提示信息,请重新运行crontab -e命令。

接下来就会看到在/home/jelly目录下会生成一个log.log文件,并写入了输入的信息。

//常用情况举例

10 0 * * * /usr/bin/curl http:www.baidu.com   //表示每天0点10分定时访问百度

30 21 * * * /usr/local/etc/rc.d/lighttpd restart  //表示每晚的21:30重启apache

00 * * * * /usr/local/bin/php /home/john/myscript.php  //每一小时执行myscript.php

*/5 * * * * /usr/bin/curl -o temp.txt http://www.jb51.net/myscript.php //使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.jb51.net/myscript.php  //使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。 
 

转载自:无限飞翔 » Linux定期执行任务

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

  1. Linux 定时任务命令Crontab参数详解

    http://xshell.net/linux/crontab.html     实战: * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小时重启 ...

  2. linux定时任务:crontab命令

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

  3. Linux定时任务工具crontab详解及系统时间同步

    Linux配置自动时间同步 linux下时间同步的两种方法分享 tail -f /var/log/cron linux下定时执行任务的方法  在LINUX中你应该先输入crontab -e,然后就会有 ...

  4. 数据仓库005 - 复习Linux shell命令 - crontab调度 sh脚本 后台执行 软连接

    一.crontab调度 对于linux 自带crontab而言,      xxx.sh的一般编写格式以#!/bin/bash 解释器开头,可在脚本中加入: date 但是,shell脚本执行 需要 ...

  5. linux定时任务(crontab和at)

    查看定时任务:crontab -l [root@localhost test]# crontab -l no crontab for root 创建编辑定时任务:crontab -e [root@lo ...

  6. 建立Linux计划命令crontab

    crontab翻译:排程,命令 crontab从输入设备输入命令,并将其放入crontab文件,供守护进程crond读取并执行,crond在后台每一分钟执行一次 crontab -e:创建计划命令,进 ...

  7. linux定时任务之crontab

    1.使用crontab crontab -u //设定某个用户的cron服务 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除某个用户的cron服务 cro ...

  8. 定时任务命令crontab

    crontab: * * * * * [user] command分 时 日  月 周 [用户] 命令 第1列表示分钟0-59 每分钟用*或者 */1表示第2列表示小时0-23(0表示0点)第3列表示 ...

  9. linux 定时任务 Crond Crontab

    定时任务http://www.cnblogs.com/chensiqiqi/p/6367890.html http://www.cnblogs.com/chensiqiqi/p/6389611.htm ...

随机推荐

  1. fragment的实现与互相通信

    Android3.0后出来的新控件,主要是为了在平板和手机屏幕的兼容 实现效果: 点击Sd卡,出现SD目录下的所有文件和文件夹,点击外置Sd卡,出现外置Sd卡目录下的文件和文件夹.点击U盘,出现U盘目 ...

  2. linux浏览器,邮件客户端,输入法,双屏设置,应用软件,scrot -s截图,office

    搜狗输入法linux版:http://pinyin.sogou.com/linux/help.php win/linux同时支持比较好用的浏览器:maxthon,firefox,maxthon,ope ...

  3. 「Poetize10」能量获取

    描述 Description “封印大典启动,请出Nescafe魂珠!”随着 圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上.封印台是一个树形 ...

  4. 解读sample3

    说明 理解被测试代码 理解测试代码:test fixture简介 编写fixture class TEST_F宏 其他 不应该被忽略的注释 说明 被测试代码文件 sample3-inl.h 测试代码文 ...

  5. Ubuntu Server安全Webserver搭建流程

    之前整过CentOS.整了Ubuntu才发现,Ubuntu简单多了--不知道性能相比又怎样. 以Ubtuntu 14.04为例.记录一下搭建流程. 一.SSHserver 第一件事当然是ssh,默认安 ...

  6. android如何让service不被杀死

    1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建 @Override     public int onStartCom ...

  7. Linux/UNIX套接字连接

    套接字连接 套接字是一种通信机子.凭借这样的机制.客户/server系统的开发工作既能够在本地单机上进行.也能够夸网络进行. 套接字的创建和使用与管道是有差别的.由于套接字明白地将客户和server区 ...

  8. android开发之——混淆编译

    众所周知,android的apk文件是非常容易被反编译的,这样对于开发者来说,辛辛苦苦开发应用被破解是一件很令人懊恼的事情,谷歌也认识到了这一点,所以从2.3之后就为开发者提供了一个代码混淆工具pro ...

  9. tomcat结合nginx使用 基础教程

    相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...

  10. nginx 根据IP 进行灰度发布

    灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本. nginx 的语法本身可以看作是一门小型的编程语言,通过简单的编程,可以轻松实现基于IP的灰度发布. 需求:搭建 ...