「Linuxのシェルスクリプトで多重起動を防止する」の版間の差分
ページの作成:「<source lang="bash"> #!/bin/sh PROCESSNAME=`basename $0` PROCESSID=`pidof -x $PROCESSNAME` PROCESSNUM=`echo $PROCESSID | awk '{print NF}'` if [ $PROCESSNUM -gt 1 ]; then…」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
[[pidof]]を使っているもの。 | |||
[[Ubuntu]]なら最初から入っているはず。少なくとも[[Ubuntu 20.04 LTS]]は最初から入っていた。他の[[Linux]]は知らん。 | |||
[[macOS]]でもbrewからpidofを入れれば動くと思う。試してはいない。 | |||
brew search pidof | |||
スクリプト自体はシンプルなものなので[[bash]]でも[[zsh]]でも動くとは思う。 | |||
[[Linux]]には[[ワンライナー]]が好きな人も多いが、あえて噛み砕いた。 | |||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/sh | #!/bin/sh | ||
# 自分のプロセス名を得る | |||
PROCESSNAME=`basename $0` | PROCESSNAME=`basename $0` | ||
PROCESSNUM=`echo $ | # 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 | ||
| 12行目: | 31行目: | ||
</source> | </source> | ||
[[category: Linux]] | |||
[[category: bash]] | |||
[[category: zsh]] | |||