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

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の3版が非表示)
8行目: 8行目:
スクリプト自体はシンプルなものなので[[bash]]でも[[zsh]]でも動くとは思う。
スクリプト自体はシンプルなものなので[[bash]]でも[[zsh]]でも動くとは思う。


[[Linux]]には[[ワンライナー]]が好きな人も多いが、あえて噛み砕いた。
<source lang="bash">
<source lang="bash">
#!/bin/sh
#!/bin/sh
# 自分のプロセス名を得る
PROCESSNAME=`basename $0`
PROCESSNAME=`basename $0`
PROCESSID=`pidof -x $PROCESSNAME`
 
PROCESSNUM=`echo $PROCESSID | awk '{print NF}'`
# pidofで同じプロセス名のpidたちを取得する
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