Use o status do processo como um booleano em um script bash

1

Ainda sou novo no linux, mas não tão novo na programação como paradigma, então, por favor, me perdoe se minha pergunta tiver uma resposta super óbvia.

Background: Eu quero escrever um script de inicialização que apenas verifica se um processo foi iniciado e, se não foi, para iniciá-lo. Mais especificamente, eu quero verificar se iptables, fail2ban, asterisk e mysqld foram iniciados corretamente após a reinicialização.

Eu quero que o script determine o status do serviço fornecido de maneira verdadeira / falsa. IE Eu quero que o script me dê verdadeiro ou falso quando o serviço está ativo ou não.

Eu brinquei com um par de opções "ps -aux" e "ps -ef" que eu encontrei em fóruns, mas eles não estão realmente me dando os resultados que eu quero, ou talvez eu não esteja entendendo o explicação correta.

Eu só quero ser capaz de determinar se um serviço está sendo executado de forma significativa e usar o resultado para determinar o fluxo lógico de um script de inicialização.

Agradecemos antecipadamente por qualquer resposta e nos desculpamos se a pergunta for postada no lugar errado.

    
por Son of Sam 27.01.2017 / 22:22

1 resposta

1

Alguns testes superficiais estão demonstrando que no meu sistema, o utilitário service retornará um código de saída 3 ao verificar o status de um serviço que não está em execução. Portanto, isso pode fazer o truque para você:

for svc in iptables fail2ban asterisk mysqld; do
    if ! service "$svc" status > /dev/null 2>&1; then
        echo "$svc is either not running or is an indeterminate state."
    fi
done
    
por 27.01.2017 / 22:27