
¿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 if
declaració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