スクリプトの単一インスタンスですが、同じパラメータのみを使用する

スクリプトの単一インスタンスですが、同じパラメータのみを使用する

ここに実行中のスクリプトの他のインスタンスがある場合は、スクリプトから終了する素晴らしい小さなコードがあります。

single_instance(){
    if pidof -x "${0##*/}" -o %PPID >/dev/null; then
        exit 0
    fi
}

しかし、私が探しているのは、スクリプトが実行されたときにのみ終了する関数です。同じパラメータで呼び出された

ソリューションを通じてハッキングできることcat | grep | awk | cut | sed | tac | sort | uniqを知っていますが。pidofps

あなたは何をしますか?

ベストアンサー1

次のことができます。

#!/bin/bash

single_instance() {

   pid=$(pidof -x "${0##*/}" -o %PPID)

   if [[ $(xargs -0 < /proc/$pid/cmdline) == $@ ]]
   then
       echo QUITTING
       exit 1
   fi
}

single_instance $(xargs -0 < /proc/$$/cmdline)

while :
do
    sleep 10
done

おすすめ記事