Linux环境使用crontab命令设置定时周期性执行任务【含php执行代码】

本文实例讲述了Linux环境使用crontab命令设置定时周期性执行任务。分享给大家供大家参考,具体如下:

从linux帮助中查看crontab命令有以下参数:

-u username:指定用户操作定时器
-e:编辑定时器(所有)
-l:查看定时器
-r:删除定时器(从/var/spool/cron目录中删除某个用户的crontab文件,默认删除当前用户的)
-i:删除定时器(删除之前给出确认提示)

使用场景1:

执行一些周期性统计的业务操作,例如每天凌晨0:00统计前一天所有业务员及各个小组的业绩、每组人数、任务量、完成量等等,并插入数据库方便查看

使用场景2:

代替人工执行一些循环往复的操作,例如当时女朋友考研坐等分数线公布,写了一个定时程序,实时监听研招网的新闻头条,同时对接短信验证码平台,只要新闻头条的标题变化了,就发送短信到手机上。

(下面以场景2为例使用crontab命令)

要执行的jianting.php代码:

<?php
  $log = "/var/www/html/log.txt";//日志文件(注意设置可写入权限)
  $url = 'http://yz.chsi.com.cn/'; //要监听的网址
  $info= file_get_contents($url);//抓取首页html
  preg_match('|<h4>(.*?)<\/h4>|i',$info,$m);//正则匹配头条标题内容
  if($m[1] != '<a href="/sytj/tjyx/gosytj.action?entrytype=yzgr" rel="external nofollow" target="_blank">2018年全国硕士生招生调剂意向采集服务系统</a>') { //标题改变了
    //判断日志中是否已有记录,如果为空记录一条,并发送短信或邮件通知
    $str = file_get_contents($log);
    $str = trim($str);
    $bom = pack('H*','EFBBBF');
    $str = preg_replace("/^$bom/", '', $str);//去除BOM
    if($str == ""){
      $text = '监听有变化';
      file_put_contents($log,$text,FILE_APPEND);
      //发送短信或邮件操作
      ......
    }
  }

linux下使用which命令查看php安装路径:

which php

设置定时任务,这里盗了一张网上的图(crontab格式说明):

crontab -e

//执行周期 php安装路径 执行的php文件(注意设置可执行权限)
例如: 5 0 * * * /usr/bin/php /var/www/html/jianting.php //每天凌晨5分执行

10秒执行一次的写法举例:

* * * * * /usr/bin/php /var/www/html/jianting.php
* * * * * sleep 10; /usr/bin/php /var/www/html/jianting.php
* * * * * sleep 20; /usr/bin/php /var/www/html/jianting.php
* * * * * sleep 30; /usr/bin/php /var/www/html/jianting.php
* * * * * sleep 40; /usr/bin/php /var/www/html/jianting.php
* * * * * sleep 50; /usr/bin/php /var/www/html/jianting.php

此时查看已经有了定时任务:

crontab -l

重启crontab服务

service crond restart

换了个服务器,遇到无法执行php文件的问题,解决办法:

5 0 * * * /usr/bin/curl http://www.xxx.com/jianting.php //使用curl命令访问php文件
5 0 * * * cd /var/www/html && /usr/bin/php /var/www/html/jianting.php

希望本文所述对大家Linux服务器配置有所帮助。

(0)

相关推荐

  • Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行.cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业.crontab命令允许用户提交.编辑或删除相应的作业.每一个用户都可以有一个crontab文件来保存调度信息.系统管理员可以通过cron.deny 和 cron

  • 在linux上定期执行命令、脚本(cron,crontab,anacron)

    人类把时间做了切割,想象一条笔直的线永远向前,本来这条直线上什么都没有,但是人类根据时间的长短(单位)在这条直线上做了密密麻麻的标记(世纪-年-月-日-时-分-秒-纳秒......),通过这样的方式历史上的每一个时刻都能够被单独拿出来,而未来的每一个时刻也能被单独计划.更重要的是,每一个单独的时刻又能跟相邻的被更大单位所控制的相似时刻做比较,比如,今天的晚上12点跟明天的晚上12点,相似的是,两个时刻都是12点,不同的是今天跟明天,她们是相邻的更大单位.因为这样的缘故,在被更大单位所隔开的每一个

  • Linux Crontab 启动 、运行 和编辑 查看的命令

    cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /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

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

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行.要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab.该文件使用的格式和 /etc/crontab 相同.当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名

  • linux crontab 实现每秒执行的实例

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 创建一个php做执行动作,非常简单,就是把当前时间写入log. <?php file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND); ?> crontab -e 输入以下语句,然后 :wq 保存退出.

  • linux定时任务crontab 实现每秒执行一次的方法

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. Cron 各项的描述 以下是 crontab 文件的格式: {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} o minute: 区间为 0 – 59 o hour: 区间为0 – 23 o day-of-month: 区间为0 – 31 o month: 区间为1 – 12.

  • linux下定时执行任务的方法及crontab 用法说明(收集整理)

    linux下定时执行任务的方法 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 一.cron在3个地方查找配置文件: 1./var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的cron

  • 浅谈Linux配置定时,使用crontab -e与直接编辑/etc/crontab的区别

    Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行,下面就直接说一下2种方法的区别: 方法1: 使用命令 crontab -e 然后直接编辑定时脚本. 这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本. 如: [root@localhost cron.d]# cd /var/spool/cron [root@localhost cron]# ll 总用量 4 -

  • Linux定时任务Crontab详解(推荐)

    今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置.Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录.下面看一下具体的用法: 首先查看一下/etc/crontab文件: $ cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/us

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

    下面介绍Crontab的两种方法. 一.在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本. 每一小时执行myscript.php如下: 复制代码 代码如下: # crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php /usr/local/bin/php为PHP程序的路径. 二.在Crontab中使用URL执行脚本 如果你的P

  • Linux中crontab定时任务不执行的原因

    最近在linux中遇到了个crontab定时任务不执行的case,在这给大家分享一下,避免踩到我遇到的坑. 先贴脚本吧 为了方便展示,把脚本入参,都写死了 #!/usr/bin/env bash # 1输出文件,到log 例如: bg # 2 目标文件目录 不带最后的/ 例如:/opt/flume/home/hdp_lbg_ectech/rawdata/xxx/web_vip_bg # 3 执行的时候选择前几天的日志 例如:1 LAST_DAY=$(date +"%Y-%m-%d" -

随机推荐