Como ver se um processo específico está sendo executado ou não por 1 hora no shell

2

Meu nome do processo é test . Se eu usar

ps -ef | grep test

Eu vejo que o processo está sendo executado. Agora quero verificar isso a cada 10 minutos por uma hora e imprimir com sucesso se ele estiver sendo executado com sucesso por uma hora. Qual é a melhor maneira de fazer isso?

    
por beginner_user 21.04.2016 / 22:39

2 respostas

2

Você pode usar um while loop; aqui estou usando pgrep para verificar se o processo está sendo executado:

#!/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

Substitua <process_name> pelo nome real do processo que você deseja acompanhar.

    
por heemayl 21.04.2016 / 22:49
0

Um loop simples em um script:

#! /bin/bash
start=$SECONDS
while (( SECONDS - start < 3600 ))
do
    sleep 10m
    pgrep -f test &>- || exit
done
echo success

SECONDS é uma variável especial no bash que contém o número de segundos desde que o script foi iniciado. pgrep test verifica um processo chamado test . Se não encontrar um, sairemos do script. Se não, nós sleep por 10 minutos.

Se não saíssemos, então pgrep foi bem-sucedido. Então, echo success .

    
por muru 21.04.2016 / 22:49