crontab定時任務第一個周期未完成下一個周期執行就來了


一、現象

有一個定時任務,每分鍾執行一次,前一分鍾還沒有執行完成,下一個分鍾就來了,怎么解決。 

 

二、模擬

#!/bin/bash

echo "開始 `date` " >> /lile/shell/ll.txt
sleep 70
echo "結束 `date` " >> /lile/shell/ll.txt

 

*/1 * * * * /bin/sh /lile/shell/test_cron.sh

 

輸出結果:不是一個執行完,再執行下一個的結果 

 

三、解決辦法: 

 

使用文件鎖flock,使用文件鎖的文件可以是任意文件 

*/1 * * * * flock -xn /lile/shell/test_cron.sock -c '/bin/sh /lile/shell/test_cron.sh'

 

輸出結果: 


這樣的話,當前一個任務沒有執行完,后一個任務就來了的話,是不會執行的,會直到這個任務執行完成后,然后一個周期的時候再執行


四、flock常用參數(man flock)

-s:獲取一個共享鎖
-x :獲得一個獨占鎖
-u:解除鎖
-n:如果獲取鎖失敗立即返回而不是等待
-w:如果獲取鎖失敗等待的時間
-c:在shell中允許一個命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM