2

私はOracle Linuxを使用しています。次のことを行うシェルスクリプトがあります。

#some stuff happening here

gnome-terminal --title='my application' -x /path/my_application -param val

#some more stuff

ここで、スクリプトが複数回実行される可能性は十分にあります。ただし、まだ実行されていない場合にのみ開始したいですmy_application。それを行う次のコードを見つけました。

ps cax | grep my_application > /dev/null
if [ $? -eq 0 ]; then
    echo "My application already running."
else
    gnome-terminal --title='my application' -x /path/my_application -param val
fi

これはうまくいきます。ここに問題があります。2 つ目のシェル スクリプトがあります。も実行されますがmy_application、パラメーターが異なります。両方のスクリプトが一緒に実行される可能性があります。その場合、my_application実行中のインスタンスが 2 つ存在する必要があります。これは、パラメーターが異なるためです。私の考えは、各 gnome-terminal に異なるタイトルを付けてから、開始する前にそのタイトルの gnome-terminal が既に存在するかどうかを確認することmy_applicationでした。

そうは言っても、私はこれを完全に間違っているかもしれないので、どんな提案も大歓迎です.

要約すると、同じアプリケーションを起動する 2 つのスクリプトがありますが、パラメーターは異なります。両方のスクリプトを一緒に実行することも、それぞれ複数回実行することもできます。特定のスクリプトがアプリケーションを開始した場合、そのスクリプトが再度実行されたときにアプリケーションを再度開始してはなりません (そのアプリケーションがまだ実行されていると仮定します)。ただし、アプリケーションを開始する 1 つのスクリプトが、他のスクリプトが同じアプリケーションを開始するのを妨げてはなりません。

4

1 に答える 1