「Linuxのシェルスクリプトで多重起動を防止する」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) 細 (Administrator がページ「Linuxのシェルスクリプトで多重起動防止する」を「Linuxのシェルスクリプトで多重起動を防止する」に移動しました) |
Administrator (トーク | 投稿記録) |
||
10行目: | 10行目: | ||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/sh | #!/bin/sh | ||
+ | |||
+ | # 自分のプロセス名を得る | ||
PROCESSNAME=`basename $0` | PROCESSNAME=`basename $0` | ||
− | + | # pidofで同じプロセス名のpidたちを取得する | |
− | PROCESSNUM=`echo $ | + | PROCESSIDS=`pidof -x $PROCESSNAME` |
+ | # awkで配列の要素数を数える(プロセス数を得る) | ||
+ | PROCESSNUM=`echo $PROCESSIDS | awk '{print NF}'` | ||
+ | # プロセス数が1より大きければ多重起動 | ||
if [ $PROCESSNUM -gt 1 ]; then | if [ $PROCESSNUM -gt 1 ]; then | ||
+ | # 終了 | ||
echo "multiple start" | echo "multiple start" | ||
exit 0 | exit 0 |
2020年7月2日 (木) 02:32時点における版
pidofを使っているもの。
Ubuntuなら最初から入っているはず。少なくともUbuntu 20.04 LTSは最初から入っていた。他のLinuxは知らん。
macOSでもbrewからpidofを入れれば動くと思う。試してはいない。
brew search pidof
スクリプト自体はシンプルなものなのでbashでもzshでも動くとは思う。
#!/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