Linuxには、標準コマンドでflockと呼ばれる関数が存在する。
簡単に例を紹介する。
<例>
crontab に登録したいシェルが1分ごとに実行したいのだが、1分を超える時がある場合に二重起動しないように flockで二重起動を防止する。
echo.sh
#!/bin/sh
echo "Hello,World"
crontab
*/1 * * * * flock -n /tmp/echo.lock /home/ec2-user/sh/echo.sh >> /tmp/echo.log
上記のようにflock -n にてlockファイルを指定することで、二重起動しないようになる。
仕組み
echo.lockは初回は作成されるが、echo.shが起動していない間も存在する。
おそらく、echo.lockをシステム上でロックされているかされていないかを管理していると思われる。