如何让linux定时任务crontab按秒执行?
linux定时任务crontab最小执行时间单位为分钟
如果想以秒为单位执行,应该如何设置呢?
思路
正常情况是在crontab中直接定义要执行的任务,现在我们在中间添加一个脚本文件
自定义一个脚本文件,循环执行要执行的任务,循环中使用sleep来控制间隔秒数
在crontab中添加一个任务,设置为每分钟都执行这个脚本
就是用crontab控制分钟,用脚本内的循环来控制秒
示例
(1) 定义目标任务
用php写了一个测试任务,向文件中写一个时间信息
文件路径 /root/test.php
<?php
file_put_contents('/root/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND);
?>
(2)编写执行任务的脚本
文件路径 /root/test.sh
#!/bin/bash
#间隔的秒数,就是要几秒执行一次
#不能大于60
step=2
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/root/test.php')
sleep $step
done
exit 0
(3)添加定时任务
crontab -e
* * * * * /root/test.sh
重启定时任务服务
service crond restart
(4)查看效果
tail -f /root/run.log
可以看到按秒打印了信息