シェルスクリプトで排他制御したいケースがたまにあります。 「多重起動の抑制」「二重起動の禁止」などとされることもあります。よくやるのは pid ファイルを作成したりロックファイルを作成したりだと思いますが、「ファイルの有無」とか「プロセスIDのチェック」がどうも不安定に感じていました。ファイルシステムの排他ロックとか簡単に使えればいいのに…! 調べてみると、flock(1) なんていう便利なものがあることがわかりました。 http://linux.die.net/man/1/flock http://luna2-linux.blogspot.jp/2011/08/flock.html 第二版 あえて、「singleton.sh を source することでスクリプトを排他制御する」という構成にこだわる。 # 利用者はこのファイルを source します _LOCK_FILE=$0.lock
![flock(1)でシェルスクリプトの排他制御(Linux) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/853d1b7b9874b3261a9a287429260db459ad5970/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9ZmxvY2slMjgxJTI5JUUzJTgxJUE3JUUzJTgyJUI3JUUzJTgyJUE3JUUzJTgzJUFCJUUzJTgyJUI5JUUzJTgyJUFGJUUzJTgzJUFBJUUzJTgzJTk3JUUzJTgzJTg4JUUzJTgxJUFFJUU2JThFJTkyJUU0JUJCJTk2JUU1JTg4JUI2JUU1JUJFJUExJUVGJUJDJTg4TGludXglRUYlQkMlODkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWFmZmJiOGU0NTc3NzRjMmM5YWFlNWZjMGIxMDk0ZWEy%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbWEyc2FrYSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MmU2NzliZGYwZDBlNWVkYTkwOThlNDZkYTc0NjA2M2I%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D03443640b008aa77839e84f91746a474)