Faz algo se um programa está rodando

3

Existe algo que você pode digitar no terminal para que ele execute um comando se um determinado programa estiver em execução? Por exemplo, if <Libre office is running> then sudo pkill <Libre ofice> .

Editar 1: Então o que eu quero fazer é fazer uma declaração if no terminal que roda se um programa está rodando e se não estiver, não faz nada, ou faz outra coisa.

    
por Feldpausch All4 06.05.2014 / 00:53

1 resposta

6
  

"o que eu quero fazer é fazer uma declaração if no terminal que é executado se um   programa está em execução e se não é que não faz nada, ou faz alguma coisa   mais "

Para determinar se um programa está em execução, dado seu nome, use pgrep . Para fazer isso, se o processador de texto do LibreOffice estiver em execução:

pgrep soffice.bin >/dev/null && do_something

Similarmente, para fazer algo se o processador de texto do LibreOffice não estiver em execução:

pgrep soffice.bin >/dev/null || do_something

Além disso, você pode usar esses dois em combinação:

pgrep soffice.bin && do_one_thing || do_another

Ou, se as coisas ficarem mais complicadas, use uma declaração if :

if pgrep soffice.bin
then
    # command is running
    do_one_thing
    do_one_thing2
else
    # command is not running
    do_another
    do_another2
fi

O trabalho acima porque pgrep , assim como grep , define um código de saída útil. Se um processo for encontrado, ele retornará com um código de saída igual a zero (que o shell interpreta como true lógico). Se não, ele retorna com um (o shell interpreta qualquer código de saída diferente de zero para dizer falso).

Para descobrir todos os programas atualmente em execução (e, portanto, qual nome usar como argumento para pgrep ), execute ps ax

    
por John1024 06.05.2014 / 01:24