同時に実行される2つのスクリプトファイルがあります。他のスクリプトのプロセスjava
に影響を与えずに、1つのスクリプトで実行されているプロセスを終了するだけです。java
答え1
pgrep -x script1 | xargs -I pid pkill -x -P pid java
java
親プロセスを終了するために呼び出されるプロセスscript1
。
答え2
これを実装し、強力にし、一時ファイルへの競合を防ぐなど、さまざまな方法があります。しかし、次のように始めることができます。
script1:
# add the line:
# $! returns the process id of last job run in background
java -jar myjar1 &
echo $! > /tmp/script1.txt
...
# kill the script 2
# -9 SIGKILL or -15 SIGTERM
kill -9 `cat /tmp/script2.txt`
script2:
# add the line:
# $! returns the process id of last job run in background
java -jar myjar2 &
echo $! > /tmp/script2.txt
...
# kill the script 1
# -9 SIGKILL or -15 SIGTERM
kill -9 `cat /tmp/script1.txt`
より良い結果を得るには、「cat it」の前にファイルが存在することを確認できます。
if [ -e "/tmp/scriptN.txt" ]; then
kill -9 `cat /tmp/scriptN.txt`
fi