El nombre de mi proceso es test
. si uso
ps -ef | grep test
Veo que el proceso se está ejecutando. Ahora quiero verificar esto cada 10 minutos durante una hora e imprimir correctamente si se ejecuta correctamente durante una hora. ¿Cual es la mejor manera de hacerlo?
Respuesta1
Puedes usar un while
bucle; Aquí estoy usando pgrep
para verificar si el proceso se está ejecutando:
#!/bin/bash
counter=0
while :; do
[ "$counter" -eq 6 ] && break
if pgrep <process_name> &>/dev/null; then
echo "Success !!"
(( counter += 1 ))
sleep 10m
else
echo "Process not running..exiting !!"
break
fi
done
Reemplácelo <process_name>
con el nombre real del proceso que desea rastrear.
Respuesta2
Un bucle simple en un script:
#! /bin/bash
start=$SECONDS
while (( SECONDS - start < 3600 ))
do
sleep 10m
pgrep -f test &>- || exit
done
echo success
SECONDS
es una variable especial en bash que contiene la cantidad de segundos desde que se inició el script. pgrep test
busca un proceso llamado test
. Si no encuentra ninguno, salimos del script. Si no, lo hacemos sleep
durante 10 minutos.
Si no salimos, entonces pgrep
fue un éxito. Entonces, echo success
.