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