flock(1) 是個好用的工具,可以避免指令同時重複執行。基本的用法是:
flock /tmp/example.lock /usr/bin/example
從這邊的 /tmp/example.lock
可以看出是透過檔案系統層的鎖實做的,也因為這樣的設計,所以用在 NFS 上時,可以規劃出跨機器的鎖定機制。(不過要注意舊版的 NFSv2/NFSv3 是可以刻意不跑 lock daemon 的,這樣就爛掉了 XD)
配合 crontab 執行時,-n
也是常用的選項,用在「這次沒跑也沒關係」的東西上,通常用在是計算出來後丟到 cache 內的程式,跑比較久的時候就跳過這次...