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