LoginSignup
1
1

More than 5 years have passed since last update.

忘備録 sh 001

Last updated at Posted at 2016-06-27

二重起動防止したいときにシェルのpsコマンドからgrep -vしてPIDを除外しても、うまくいかないことがあるよという話

ps -ef | grep ${MyProcName} | grep -v ${MyPid}

これをやるとpsのプロセスからフォークした子プロセスが見えることがある
模様。パイプのタイミングによって見えたり見えなかったりする

先に起動している同名のプロセスがあったら終了なんていうものに組み込んだりするとマズイ

なので仕方なく、

ps -ef >${TmpDir}/${MyPid}

みたいな一時ファイルに退避させて

awk -v pid=${MyPid} -v pname=${MyProcName} '$2 != pid && $8 == pname { print $2}'  ${TmpDir}/${MyPid}

のようにしてPid取れたら多重起動、なければ自プロセスだけと判断するようにした方がいい

結局これもpsのタイミング云々では多重起動を許してしまうが、それと上は別の問題

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1