Linux的crontab最小的間隔是每分鐘執行一次,但是如果在這一分鐘之内,之前的指令并沒有執行完成呢?這樣就會産生沖突。接下來我介紹一個解決沖突的辦法,那就是linux的flock檔案鎖.
格式:
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command
參數是:
-s, --shared: 獲得一個共享鎖
-x, --exclusive: 獲得一個獨占鎖
-u, --unlock: 移除一個鎖,通常是不需要的,腳本執行完會自動丢棄鎖
-n, --nonblock: 如果沒有立即獲得鎖,直接失敗而不是等待
-w, --timeout: 如果沒有立即獲得鎖,等待指定時間
-o, --close: 在運作指令前關閉檔案的描述符号。用于如果指令産生子程序時會不受鎖的管控
-c, --command: 在shell中運作一個單獨的指令
-h, --help 顯示幫助
-V, --version: 顯示版本
下面是在crontab中的使用:
* * * * * flock -xn /tmp/aaa.lock -c 'php /home/aaa.php >> /home/aaa.log' . //-xn 檔案鎖使用獨占鎖,如果鎖定則失敗不等待。