私は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 つのスクリプトが、他のスクリプトが同じアプリケーションを開始するのを妨げてはなりません。