pgrep -x script1 | xargs -I pid pkill -x -P pid java
Mataria os processos java
cujo processo pai é chamado script1
.
Eu tenho dois arquivos de script em execução simultaneamente. Eu só preciso matar o processo java
em execução em um script sem afetar o processo java
no outro.
pgrep -x script1 | xargs -I pid pkill -x -P pid java
Mataria os processos java
cujo processo pai é chamado script1
.
Existem muitas maneiras de implementá-lo, torná-lo robusto, para evitar corrida em arquivos temporários e etc., mas apenas que você pode começar com:
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'
para melhorar você pode verificar se o arquivo existe antes de "cat it" com
if [ -e "/tmp/scriptN.txt" ]; then
kill -9 'cat /tmp/scriptN.txt'
fi
Tags process kill shell-script