Linux定时任务crontab实现每秒执行一次2种方法

1 说明

Linux的定时任务crontab,实现每秒执行一次命令,有两种办法。


2 办法

(1) 办法1:利用 crontab 的延时

# 原理:通过延时方法 sleep N 来实现每N秒执行一次命令
# 操作:输入crontab -e语句,然后添加如下内容,最后 :wq 保存退出

* * * * * /usr/bin/curl http://www.test.com
* * * * * sleep 5; /usr/bin/curl http://www.test.com
* * * * * sleep 10; /usr/bin/curl http://www.test.com
* * * * * sleep 15; /usr/bin/curl http://www.test.com
* * * * * sleep 20; /usr/bin/curl http://www.test.com
* * * * * sleep 25; /usr/bin/curl http://www.test.com
* * * * * sleep 30; /usr/bin/curl http://www.test.com
* * * * * sleep 35; /usr/bin/curl http://www.test.com
* * * * * sleep 40; /usr/bin/curl http://www.test.com
* * * * * sleep 45; /usr/bin/curl http://www.test.com
* * * * * sleep 50; /usr/bin/curl http://www.test.com
* * * * * sleep 55; /usr/bin/curl http://www.test.com


(2) 办法2:利用 shell 脚本实现

1)创建一个tolog.php文件,用于执行动作,非常简单,就是把当前时间写入log。

<?php 
file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND);
?>


2)编写shell脚本crontab.sh文件,内容如下:

#!/bin/bash   
step=2 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/home/fdipzone/php/crontab/tolog.php')
sleep $step
done
exit 0


3)输入crontab -e语句,然后添加如下内容,最后 :wq 保存退出,如下:

* * * * * /home/fdipzone/php/crontab/crontab.sh


4)使用以下命令查看结果

fdipzone@ubuntu:~$ tail -f /home/fdipzone/php/crontab/run.log

# 结果如下:

2021-03-31 22:23:01
2021-03-31 22:23:03
2021-03-31 22:23:06
2021-03-31 22:23:08
2021-03-31 22:23:10
2021-03-31 22:23:12
2021-03-31 22:23:14
2021-03-31 22:23:16
2021-03-31 22:23:18
2021-03-31 22:23:20
2021-03-31 22:23:22
2021-03-31 22:23:25
2021-03-31 22:23:27
2021-03-31 22:23:29



相关推荐

  • 生成图片

    from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3