동시에 실행되는 두 개의 스크립트 파일이 있습니다. 다른 스크립트의 프로세스 java
에 영향을 주지 않고 한 스크립트에서 실행 중인 프로세스 만 종료하면 됩니다 .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