"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