#!/bin/sh # 二重起動チェック if [ $$ != `pgrep -fo $0` ]; then echo "Already running!" >&2 exit 9 fi # メイン処理 echo "[`date '+%Y/%m/%d %T'`] Sleep 10 seconds..." sleep 10 exit 0 $$ は、自分自身のプロセスID。 $0 は、自分自身のプロセス名(相対パス)。 pgrep -fo $0 は、自分自身のプロセスIDを取得。 メリット・デメリットについて メリットは、cron 実行しないのであればこれで充分である。 デメリットは、cron で実行された場合にチェックが効かない。 理由は、pgrep -fo $0 が cron で実行した際のプロセスIDとなってしまう(子プロセス($0)のプロセスIDにならない)ため。 2. 作成例(その2)
![Linux - bash スクリプト二重起動チェック!](https://cdn-ak-scissors.b.st-hatena.com/image/square/f7ce9841ccf75ba130e109c2baccc06703c814d5/height=288;version=1;width=512/https%3A%2F%2Fwww.mk-mode.com%2Fblog%2Fassets%2Fimages%2Fabout_me.png)