Linux CentOS7 下定时任务(秒级别)的实现

时间:2021-10-16 02:05:18

系统环境:我的环境是 

cat /etc/redhat-release //看操作系统版本

CentOS Linux release 7.4.1708 (Core) 

Linux CentOS7 下定时任务(秒级别)的实现

一.使用延时来实现每N秒执行  原理:通过延时方法 sleep N  来实现每N秒执行。

写个php文件

$time = @date("Y-m-d H:i:s");
echo $time;
 file_put_contents('text.txt',$time."\n",FILE_APPEND);

打开 crontab -e 编辑定时任务 每隔10秒执行一次

* * * * *  cd /www/dingshi/;php index.php
* * * * * sleep 10;  cd /www/dingshi/;php index.php
* * * * * sleep 20;  cd /www/dingshi/;php index.php
* * * * * sleep 30;  cd /www/dingshi/;php index.php
* * * * * sleep 40;  cd /www/dingshi/;php index.php
* * * * * sleep 50;  cd /www/dingshi/;php index.php

注意 php是你配置的环境变量  查看  tail -f  /www/dingshi/text.txt   

Linux CentOS7 下定时任务(秒级别)的实现

遇到的坑

之前写的是  * * * * *  php  /www/dingshi/index.php  等不知道为什么文本里就是没内容,定时任务执行了但是没有写入, 权限,重启定时任务都试了,就是没写入,但是在命令行 执行  php  /www/dingshi/index.php 可以执行无语

后来改为了 * * * * *  cd /www/dingshi/;php index.php


二.编写shell脚本实现  原理:在sh使用for语句实现循环指定秒数执行。

写shell脚本执行php文件 将数据写到文本

  1. #!/bin/bash  
  2.   
  3. step=10 #间隔的秒数,不能大于60  
  4.   
  5. for (( i = 0; i < 60; i=(i+step) )); do  
  6.     $(php 'php  /www/dingshi/index.php')  
  7.     sleep $step  
  8. done  
  9.   
  10. exit 0  

编辑定时  * * * * *  /www/dingshi/crontab.sh 



-----------------------------------------分割线---------- 查看定时任务是否执行,-----------------------------

启动定时:service crond start crontab的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志。  tail -f /var/log/cron