linux 中的 cron 定时执行命令,先上例子:
每间隙两分钟把 "Hello world"写到 /tmp/hello.txt

crontab -e
*/2 * * * * echo "Hello world" >> /tmp/hello.txt

以下开始
先检查是否安装,如果没有安装,则安装
用 find 查看一下,然后判定该服务是否在运行,
使用 /sbin/service crond status 命令

如果没有安装,则先安装
以centos为例

yum -y install vixie-cron
yum -y install crontabs

运行:

service crond start

停止:

service crond stop

cron 服务每分钟不仅要读一次/var/spool/cron内的所有文件,

还需要读一次/etc/crontab,
因此我们配置这个文件也能运用cron服务做一些事情。
用crontab配置是针对某个用户的,
而编辑/etc/crontab是针对系统的任务。

/etc/crontab文件的文件格式如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录

# run-parts 01 * * * * root
# run-parts /etc/cron.hourly 02 4 * * * root
# run-parts /etc/cron.daily 22 4 * * 0
# root run-parts /etc/cron.weekly 42 4 1 * * root
# run-parts /etc/cron.monthly

cron 是一个可以用来根据时间、日期、月份、星期的组合
来调度对重复任务的执行的守护进程。

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

前四行是用来配置 cron 任务运行环境的变量。
SHELL 变量的值告诉系统要使用哪个 shell 环境(
在这个例子里是 bash shell);
PATH 变量定义用来执行命令的路径。
cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。
如果 MAILTO 变量被定义
为空白字符串(MAILTO=""),电子邮件就不会被寄出。
HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute hour day month dayofweek command

minute — 分钟,从 0 到 59 之间的任何整数
hour — 小时,从 0 到 23 之间的任何整数
day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有
效日期)
month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、
feb 等等)
dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(
或使用星期的英文简写如 sun、mon 等等)
command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也
可以是执行你自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号
意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的
整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内
可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率
值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行
一次任务。
开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用 run-parts 脚本来执行
/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly
目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中
的文件应该是 shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执
行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和
/etc/crontab 中一样的语法。

crontab 的例子1:

根用户以外的用户可以使用 crontab 工具来配置 cron 任务。
所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,
并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,
登录为该用户,然后键入 crontab -e 命令,
使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。
该文件使用的格式和 /etc/crontab 相同。
当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,
并写入文件 /var/spool/cron/username 中。
cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、
以及 /var/spool/cron 目录中的改变。如果发现了改变,
它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护
进程了。

控制对 cron 的使用2:

/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。
这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。
如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。
使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。
无论使用控制文件中的规定如何,根用户都总是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,
并且 cron.deny 文件会被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用
cron。

启动和停止服务

要启动 cron 服务,使用 /sbin/service crond start 命令。要停止该服务,
使用 /sbin/service crond stop 命令。推荐你在引导时启动该服务。

Crontab使用详解
先来个测试的例子,每间隙两分钟写把 hello world写到/tmp/hi文件中
crontab -e
输入
*/2 * * * * echo "hello world." >> /tmp/hi.txt

名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
基本格式 :
*  *  *  *  *  command
分  时  日  月  周  命令
M: 分钟(0-59)。每分钟用*或者 */1表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环
境变量

说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是
类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是
root)才能够指定他人的时程表。
如果不使用 -u user 的话,就是表示设定自己的时程表。

参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想
用别的文字编辑器,
则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL
joe)
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份
,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程
序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时
表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时
个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,...
时表示第 a, b, c...个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设
定时程表。

例子 :
#每天早上7点执行一次 /bin/ls :
0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次
/usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 lin3615@lin3615.com :
0 17 * * 1-5 mail -s "hi" lin3615@lin3615.com < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
=====================================
以下是用来执行PHP脚本和mysql数据库自动备份

执行php脚本时,在nginx中执行 php文件,两分钟执行一次
/usr/local/nginx/html/test.php
可以在 crontab中写,以下是 nginx下的php文件,
其中test.php文件中可以包含别的文件,php-fpm的路径一定要正确

*/2 * * * * /usr/local/bin/php-fpm /usr/local/nginx/html/test.php

apache下可以是这样,test.php中可以包含别的文件:

*/2 * * * * /usr/local/bin/php /usr/local/apache2/htdocs/test/test.php

还可以用 url访问,但是要安装 lynx,
假如lynx是安装在 /usr/bin/lynx,
则(可以包含其中的文件:)

*/2 * * * * /usr/bin/lynx -source http://www.lin3615.net/test.php

还可以把 .php文件放在非web目录下,
如 /usr/local/下, test.php (可以包含其中的文件):

*/2 * * * * /usr/local/bin/php /usr/local/test.php

备份mysql数据库
第一步:在服务器上配置备份目录代码

mkdir /var/lib/mysqlbackup
cd /var/lib/mysqlbackup 

第二步:编写备份脚本代码:

vim dbbackup.sh 

粘帖以下代码,更改其中的username,password和dbname,mysqldump的路径一定要正确,绝对路径,可用 find 找 mysqldump

#!/bin/sh
/绝对路径/mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz
cd /var/lib/mysqlbackup
rm -rf `find . -name '*.sql.gz' -mtime 10` #删除10天前的备份文件

第三步:更改备份脚本权限

chmod +x dbbackup.sh

第四步:用crontab定时执行备份脚本代码

crontab -e

若每天晚上01点00备份,添加如下代码,

00 01 * * * /var/lib/mysqlbackup/dbbackup.sh

linux 定时执行 cron指令的更多相关文章

  1. Linux定时任务系统 Cron

    运行计划任务时:service crond restart提示:crond: unrecognized service安装计划任务:yum -y install vixie-cron 另外附计划任务的 ...

  2. linux定时执行任务 转

    转自:http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html linux定时执行任务   (1)Linux下如何定时执行php ...

  3. linux实现php定时执行cron任务详解(转)

    对于PHP本身并没有一套解决方案来执行定时任务,不过是借助sleep函数完成的.这种方就是要提前做一些配置,如实现过程: 复制代码 代码如下: ignore_user_abort();//关掉浏览器, ...

  4. linux定时执行任务crontab命令用法

    linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...

  5. 【转】linux 定时执行shell脚本

    在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle ...

  6. linux定时执行任务

    (1)Linux下如何定时执行php脚本?(2)Linux下如何设置定时任务?(3)Crontab定时执行程序 核心提示:键入 crontab -e 编辑crontab服务文件 分为两种情况:(还有一 ...

  7. Linux定时执行任务命令概述:at和crontab

    本文介绍在Linux下的两种定时执行任务的方法:at命令,以及crontab服务. (1)at命令 假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了. 设置at命令很简单,指示定 ...

  8. linux 定时执行shell脚本

    转自:http://blog.csdn.net/jingxiangren/article/details/4745631 在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程, ...

  9. 转 Linux定时执行任务命令at和crontab

    本文介绍在Linux下的两种定时执行任务的方法:at命令,以及crontab服务. (1)at命令 假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了. 设置at命令很简单,指示定 ...

随机推荐

  1. PCL 点云数据操作 OpenCV遍历数据

    1.对于点云类型实例cloud,对其第i个点进行赋值操作,使用cloud.point[i].x 和 cloud.point[i].y 和cloud.point[i].z 分别对其XYZ坐标赋值. cl ...

  2. 一步一步写算法(之hash表)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] hash表,有时候也被称为散列表.个人觉得,hash表是介于链表和二叉树之间的一种中间结构.链 ...

  3. iOS开发——面试笔试精华(四)

    面试笔试精华(四) 1.        Object-C有多继承吗?没有的话用什么代替?
 1>  OC是单继承,没有多继承 2>  有时可以用分类和协议来代替多继承 2.        ...

  4. log_slave_updates在线修改

    http://planet.mysql.com/entry/?id=20450 mysql> show variables like 'log_slave_updates'; +-------- ...

  5. C#_MVC_ajax for form

    在上一篇介绍MVC中的Ajax实现方法的时候,曾经提到了除了使用Ajax HTML Helper方式来实现之外,Jquery也是实现Ajax的另外一种方案. 通过get方法实现AJax请求 View ...

  6. Editing and Deleting Data

    Editing and Deleting Data In the previous chapter we've come to learn how we can use the zend-form a ...

  7. Android 框架修炼-自己封装双缓存管理框架库

    一.概述 Android开发中,网络请求是很重要的一部分,而缓存网络请求来的图片或者响应结果字符串或者结果流,既可以省流量,同时也可以帮助我们 解决无网或弱网情况下加载情况,当然也可以提升程序性能效率 ...

  8. 简书APP

    找第三方的时候看到简书这个APP,上网搜了一下发现网页版非常的干净,开头的一篇文章就是"你没实力就别心存侥幸",看完也挺有有同感的.文章网址:http://www.jianshu. ...

  9. AbStract 和Interface 方法是否能用Static修饰,为什么?

    Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...

  10. 关于Eclispe插件开发起步(一)

    Eclipse中三个最吸引人的地方是: 第一是它创新性的图形API,就是SWT/JFace. 第二是它的插件机制. 第三个是利用它的插件机制开发众多功能强大的插件. 插件成就了Eclipse的今天.E ...