如何终止在特定脚本中运行的进程

如何终止在特定脚本中运行的进程

我有两个脚本文件同时运行。我只需要终止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

相关内容