「Linuxのシェルスクリプトで多重起動を防止する」の版間の差分

提供:MonoBook
編集の要約なし
10行目: 10行目:
<source lang="bash">
<source lang="bash">
#!/bin/sh
#!/bin/sh
# 自分のプロセス名を得る
PROCESSNAME=`basename $0`
PROCESSNAME=`basename $0`
PROCESSID=`pidof -x $PROCESSNAME`
# pidofで同じプロセス名のpidたちを取得する
PROCESSNUM=`echo $PROCESSID | awk '{print NF}'`
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