Como fazer check-in de um script de shell se um executável estiver em execução ou não?

2

Eu coloquei um executável em um arquivo de script de shell abc.sh. Agora, eu quero adicionar uma linha neste abc.sh, para saber se ele está sendo executado antes do meu script iniciar ou não e se sim, o kill esse executável.

    
por Jeet 11.04.2013 / 13:37

2 respostas

8

Você pode usar pgrep para encontrar executáveis com o nome do processo:

$ pgrep firefox
3212
$ pgrep firef
3212

Use a opção -l para imprimir nomes na segunda coluna:

$ pgrep -l firefox
3212 firefox

Use a opção -x para corresponder processos cujo nome corresponda exatamente ao padrão.

$ pgrep -x firefox
3212
$ pgrep -x firef
$ 

Quando você tiver o PID do executável retornado, você poderá eliminá-lo. Você também pode fazer isso em uma única etapa usando o comando pkill se não estiver interessado no valor de PID:

$ pkill -x firefox

Ele matará o processo com nome próprio. Se não houver tal processo, nada acontecerá, exceto definir $? variável para 1.

    
por 11.04.2013 / 14:43
6
# killall executable_name

ou

# pkill executable_name

fará isso, mas é uma ideia ruim . Esse artigo explica muito bem por que (essencialmente, os nomes dos programas são totalmente arbitrários e você poderia facilmente eliminar o processo errado) e como fazê-lo corretamente (reestruture o programa para que você não tenha que matar pelo nome).

    
por 11.04.2013 / 14:46