Marcando um processo para que eu possa matá-lo mais tarde identificando

0

Eu preciso marcar um processo genérico (eu realmente não controle o comando sendo executado).

Posso fazer algo assim:

run_special_cmd(){
   "$@"  -- --very-special-command
}

run_special_cmd sleep 5000 && echo 'bar'

e depois usar:

pkill -9 -f '--very-special-command'

para identificar esses processos a serem mortos? Ou existe uma maneira genérica de marcar procs para uma identificação posterior?

    
por Alexander Mills 25.09.2018 / 05:09

1 resposta

2

Nem todo comando ignora argumentos arbitrários que você os passa.

Se o processo chamado não for bifurcado, você pode salvar o pid do processo de chamada e chamá-lo com exec. Use um script

#!/bin/sh
echo $$ > /var/run/foo.pid
exec "$@"

Isto irá executar o comando no mesmo processo, com o pid salvo antes que o processo seja executado.

Se você quiser remover o arquivo pid, poderá excluí-lo depois que o processo terminar.

#!/bin/bash
PIDFILE=/var/run/foo.pid
"$@" &
echo $! > $PIDFILE
wait
rm -f $PIDFILE

Isso iniciará o processo em segundo plano, registrará o pid, aguardará a saída do processo e, em seguida, removerá o arquivo.

    
por 25.09.2018 / 07:46