Como matar um processo em execução em um script específico

1

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.

    
por S chakraborty 20.08.2014 / 10:23

2 respostas

2

pgrep -x script1 | xargs -I pid pkill -x -P pid java

Mataria os processos java cujo processo pai é chamado script1 .

    
por 20.08.2014 / 23:25
0

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
    
por 20.08.2014 / 11:52