Linuxのシェルスクリプトで多重起動を防止する
pidofを使っているもの。
Ubuntuなら最初から入っているはず。少なくともUbuntu 20.04 LTSは最初から入っていた。他のLinuxは知らん。
macOSでもbrewからpidofを入れれば動くと思う。試してはいない。
brew search pidof
スクリプト自体はシンプルなものなのでbashでもzshでも動くとは思う。
Linuxにはワンライナーが好きな人も多いが、あえて噛み砕いた。
#!/bin/sh
# 自分のプロセス名を得る
PROCESSNAME=`basename $0`
# pidofで同じプロセス名のpidたちを取得する
PROCESSIDS=`pidof -x $PROCESSNAME`
# awkで配列の要素数を数える(プロセス数を得る)
PROCESSNUM=`echo $PROCESSIDS | awk '{print NF}'`
# プロセス数が1より大きければ多重起動
if [ $PROCESSNUM -gt 1 ]; then
# 終了
echo "multiple start"
exit 0
fi
# main