Faça algo se um programa estiver em execução

Faça algo se um programa estiver em execução

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>.

Edição 1: Então, o que eu quero fazer é fazer uma instrução if no terminal que seja executada se um programa estiver em execução e, se não estiver, não fará nada ou fará outra coisa.

Responder1

"o que eu quero fazer é fazer uma instrução if no terminal que seja executada se um programa estiver em execução e, se não estiver, não fará nada ou fará outra coisa"

Para determinar se um programa está sendo executado de acordo com seu nome, use pgrep. Para fazer algo se o processador de texto do LibreOffice estiver em execução:

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

Da mesma forma, para fazer algo se o processador de texto do LibreOffice estivernãocorrendo:

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

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

pgrep soffice.bin && do_one_thing || do_another

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

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 acima funciona 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 zero (que o shell interpreta como lógico verdadeiro). Caso contrário, ele retorna com um (o shell interpreta qualquer código de saída diferente de zero como falso).

Para descobrir todos os programas que estão em execução no momento (e, portanto, qual nome usar como argumento pgrep), executeps ax

informação relacionada