Cómo ver si un proceso específico se está ejecutando o no durante 1 hora en Shell

Cómo ver si un proceso específico se está ejecutando o no durante 1 hora en Shell

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 whilebucle; Aquí estoy usando pgreppara 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

SECONDSes una variable especial en bash que contiene la cantidad de segundos desde que se inició el script. pgrep testbusca un proceso llamado test. Si no encuentra ninguno, salimos del script. Si no, lo hacemos sleepdurante 10 minutos.

Si no salimos, entonces pgrepfue un éxito. Entonces, echo success.

información relacionada