[SOLUCIONADO]comprobar si existe un proceso

Imagen de gune
0 puntos

Hola a todos amigos.

 

Me gustaría hacer un script que mas o menos tiene esta forma

if[ condicion ]; then

lanzar programa

fi

El problema es que en condición me gustaria que se comprobara si "PROGRAMA" está en ejecución ¿esto se puede hacer?

 

La idea final es incluir esto en cron o en anacron para que compruebe si el programa esta levantado y en caso contrario que lo levante.

 

Muchas gracias a todos.

Imagen de neurobin
+1
0
-1

saludos creo que te puedo ayudar con eso

aqui usarias estos comandos:

ps -A --->> te muestra los procesos

echo $? ---->>te return true o false

grep ---> busca un argumento como un nombre que especifiques

si quieres comprobar si se ejecuntando un proceso tendrias que ejecutar esta instruccion en tu script

ps -A | grep <nombre del proceso> && echo $?

ejemplo

ps -A | grep bash

echo $?

si el proceso existe te va retornar un valor 0 (true) sino existe te va retorna un valor distinto

aqui te hice un pequeño script que probe y funciona

nota "debes introducir el nombre del proceso"

#proceso.sh

#este script lo ejecute en debian 4.0 debe funcionar bajo ubuntu

#!/bin/bash
#esta linea es opcional puedes dejar en nombre de un proceso especifico
echo "ingrese el proceso"
read PROCESO
#busca un proceso especifico
ps -A | grep $PROCESO
#echo $? returna 0 si el proceso existe sino returna otro valor
DATO="$?"
if (($DATO!=0));

then
#aqui puedes especificar el proceso que vas iniciar
#como ./apache2 start
echo "iniciar proceso"
else
echo "el proceso se esta ejecutando"
fi
#fin del script

este codigo no es gran cosa pero espero te sirva esta bastante sencillo, puedes modificarlo y mejorarlo con respecto a tus necesidades

si lo quieres ejecutar a ciertas horas del dia te recomiendo " crontab"

saludos

GNU/linux 100%

ATTE neurobin

+1
0
-1
Imagen de gune
+1
0
-1

Muchas gracias es algo parecido a lo que estaba buscando, mi sulución ha sido algo como

ps aux | grep -c PROC 

con esto recupero el numero de lineas que contienen ese proceso, entre ellas y siempre, "grep PROC". Entonces si el resultado es 1 ejecuto proceso si es GT 1 no ejecuto y escribo log.

 De todos modos tu solución me parece mas elegante que la mia y seguramente me anime a ponerla.

Muchas gracias

Eso lo sabe hasta un niño de 5 años. ¡Que alguien me traiga a un nño de 5 años!

-Groucho Marx-

+1
0
-1

Eso lo sabe hasta un niño de 5 años. ¡Que alguien me traiga a un nño de 5 años!

-Groucho Marx-

Imagen de slap
+1
0
-1

Hola.
También puedes usar:

pidof $proceso

Si echo $? devuelve 0 es que existe el proceso y si devuelve 1 es que no existe.

Saludos.
slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de gune
+1
0
-1

Gracias mil a todos.

 No se si alguien sabrá de una buena guia/manual para hacer scrpting en bash. 

Eso lo sabe hasta un niño de 5 años. ¡Que alguien me traiga a un nño de 5 años!

-Groucho Marx-

+1
0
-1

Eso lo sabe hasta un niño de 5 años. ¡Que alguien me traiga a un nño de 5 años!

-Groucho Marx-