Hacer algo si se está ejecutando un programa

Hacer algo si se está ejecutando un programa

¿Hay algo que pueda escribir en la terminal para que ejecute un comando si se está ejecutando un determinado programa? Por ejemplo, if <Libre office is running> then sudo pkill <Libre ofice>.

Edición 1: Entonces, lo que quiero hacer es crear una declaración if en la terminal que se ejecute si un programa se está ejecutando y, si no, no hace nada o hace algo más.

Respuesta1

"Lo que quiero hacer es hacer una declaración if en la terminal que se ejecute si un programa se está ejecutando y si no, no hace nada o hace algo más"

Para determinar si un programa se está ejecutando según su nombre, utilice pgrep. Para hacer algo si el procesador de textos de LibreOffice se está ejecutando:

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

De manera similar, para hacer algo si el procesador de textos de LibreOffice estánocorrer:

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

Además, puedes utilizar estos dos en combinación:

pgrep soffice.bin && do_one_thing || do_another

O, si las cosas se complican más, utilice una ifdeclaración:

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

Lo anterior funciona porque pgrep, al igual que grep, establece un código de salida útil. Si se encuentra un proceso, regresa con un código de salida de cero (que el shell interpreta como lógico verdadero). De lo contrario, devuelve uno (el shell interpreta que cualquier código de salida distinto de cero significa falso).

Para conocer todos los programas que se están ejecutando actualmente (y, por lo tanto, qué nombre usar como argumento pgrep), ejecuteps ax

información relacionada