前几天写过一篇文章,利用单纯的php实现定时执行任务,但是效率不佳,对于linux来说用crontab实现更加合理。

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

安装crontab:
yum install crontabs

说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:
chkconfig –level 35 crond on

crontab命令:

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

crontab 格式:

基本格式 :

分钟   小时   日   月   星期   命令

*        *      *    *     *       *

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

记住几个特殊符号的含义: 
“*”代表取值范围内的数字, 
“/”代表”每”, 
“-”代表从某个数字到某个数字, 
“,”分开几个离散的数字

# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab几个例子如下:

(1)第一个例子。

30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启 nginx。

(2)第二个例子,也就是本教程测试的例子

* * * * * /usr/bin/php -f /root/test.php >> test.log

每一分钟执行/root/test.php文件,将结果输出到test.log中。
完成了上面基础工作后,就来看看怎么使用crontab定时执行PHP脚本:
(1)我在/root下新建test.php文件,内容如下:

  1. <?php
  2. #!/usr/bin/php -q
  3. echo  date('Y-m-d H:i:s')."from http://www.phpddt.com \n";
  4. ?>

说明:你可以用whereis php查找php执行文件位置。
(2)然后crontab -e编写如下shell:

* * * * * /usr/bin/php -f /root/test.php >> test.log

说明:test.php必须为可执行文件:chmod +x test.php
测试结果很正常,截图如下:

当然你可以用使用crontab -e继续添加任务,在/var/spool/cron下你可以看到一个root文件。

linux使用crontab实现PHP执行定时任务(转)的更多相关文章

  1. linux使用crontab实现PHP执行定时任务

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务. 所有用户定义的 crontab 都被保存在/var/spool/cron ...

  2. linux使用crontab实现PHP执行定时任务及codeiginter参数传递相关

    http://www.phpddt.com/php/linux-crontab.html crontab: yum install crontabs //安装 说明: /sbin/service cr ...

  3. linux使用crontab实现PHP执行计划定时任务

    linux使用crontab实现PHP执行计划定时任务 前几天写过一篇文章,利用单纯的php实现定时执行任务,但是效率不佳,对于linux来说用crontab实现更加合理 首先说说cron,它是一个l ...

  4. crontab -让服务器执行定时任务

    1.启动服务 一般启动服务用 "/sbin/service crond start"就可以了,如果是root用户就是 "sudo service crond start& ...

  5. jmeter+nmon+crontab简单的执行接口定时压测

    一.概述 临时接到任务要对系统的接口进行压测,上面的要求就是:压测,并发2000 在不熟悉系统的情况下,按目前的需求,需要做的步骤: 需要有接口脚本 需要能监控系统性能 需要能定时执行脚本 二.观察 ...

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

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

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

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

  8. linux中执行定时任务对oracle备份(crontab命令)

    执行定时任务对oracle表数据备份: 1.创建sh脚本 [oracle@localhost ~]$ vi bak.sh 2.添加脚本内容 #!/bin/bash #:本脚本自动备份7天的数据库,每次 ...

  9. Linux crontab命令:循环执行定时任务(详解版)

    前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的.而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务. ...

随机推荐

  1. 1180: [CROATIAN2009]OTOCI

    1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 1032  Solved: 638[Submit][ ...

  2. APP漏洞扫描用地址空间随机化【转】

    转自:http://www.cnblogs.com/alisecurity/p/6141575.html 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描 ...

  3. linux命令行下使用vboxmanage安装linux系统

    环境:Ubuntu 15.10 64bit,virtualbox 5.0.16 准备:下载安装好virtualbox,virtualbox-extensions,准备好iso系统文件,如archlin ...

  4. 【剑指offer】构建乘积数组(注意优化空间)

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不能使用除法 ...

  5. 使用p6spy格式化日志输出

    P6Spy 是针对数据库访问操作的动态监测框架(为开源项目,项目首 页:www.p6spy.com)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改.P6Spy 分发包包括P6L ...

  6. LeetCode OJ-- Surrounded Regions **@

    https://oj.leetcode.com/problems/surrounded-regions/ 棋盘类的题目.找出所有没有被 X 包围的 O 使用深搜,但是太深了,run time erro ...

  7. C++多线程(POSIX)

    #include<iostream> #include<pthread.h> #include<ctime> #include<windows.h> u ...

  8. 如何判断自己外网IP是否为真实公网IP,以及解决方案

        如何判断本地(路由器)分配的IP是否公网IP? 公网IP:全球唯一IP地址.(公网IP又分为静态公网IP和动态公网IP,如何分辨的话,进入路由器查看连接方式pppoe连接都是动态公网IP.) ...

  9. 通过UltraISO来提取U盘启动盘的ISO镜像文件

    我们先来说下UltraISO这个工具,中文名也叫软碟通,他是一个无需量产你的U盘就可以把U盘做成启动盘的工具,当然了,这么强大的工具肯定不是免费版的,对,他是共享的:但是你可以下载特别版嘛..网上到处 ...

  10. python核心编程学习(第三版)之网络编程

    套接字 套接字是计算机网络数据结构.在任何类型的通信开始之前,网络应用程序必须创建套接字. 有两种类型的套接字,基于文件和面向网络的. unix套接字是第一个家族,AF_UNIX代表地址家族,缩写AF ...