
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 if
declaraçã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