Como controlar o segundo script baseado no script fisr no script principal no linux

0

Eu tenho novos scripts. Eu quero monitorar o serviço no servidor - temos dois scripts 1 - para verificar serviço está em execução ou não (checking.sh) 2 - iniciar o serviço (start.sh)

Eu gostaria de mesclar dois scripts em single (monitor.sh) e agendar / cron-lo. Como executo o segundo script baseado no primeiro resultado do script SE o primeiro resultado do script for 0 precisa iniciar o serviço (o segundo script precisa ser executado), se o primeiro resultado do script for 1 segundo, não será necessário executar e sair do script principal.

    
por user321371 16.11.2018 / 20:43

1 resposta

1

Isso é o que códigos de saída são para. Então, para o seu script de monitor, poderíamos fazer algo como:

#!/bin/bash
# monitor.sh  -- checks if a Thing is doing its Thing
if [[ -r /var/run/myjob.pid ]]; then
    if kill -0 $( cat /var/run/myjob.pid ); then
        exit 0   # The process is alive, job is presumably running
    else
        exit 1   # Well, we had a PID file, but it was orphaned.
    fi
else
    exit 2 # no PID file, job presumably not running
fi

Usamos um código de saída diferente para cada estado que desejamos manipular. Então, para nosso verificador de serviço:

#!/bin/bash
# check.sh -- Checks to see if Thing is Thinging and, if not, start it
if ! /path/to/monitor.sh; then
    /path/to/start.sh
fi

E agora, o script que executa o trabalho:

#!/bin/bash
# start.sh - do a Thing
if [[ -r /var/run/myjob.pid ]]; then
    echo "A Thing is already being done!" 1>&2
    exit 1 
else
    echo $$ > /var/run/myjob.pid
    trap 'rm /var/run/myjob.pid' EXIT
    do_Thing_related_things
fi
    
por 16.11.2018 / 21:07

Tags