如何讓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
可以看到按秒打印了信息