Steuerung des zweiten Skripts basierend auf dem FISR-Skript im Hauptskript unter Linux

0

Ich habe neue Skripte. Ich möchte den Dienst auf dem Server überwachen. Wir haben zwei Skripte. 1 - Zum Überprüfen, ob der Dienst ausgeführt wird oder nicht. (Checking.sh) 2 - Starten Sie den Dienst. (Start.sh)

Ich möchte zwei Skripte zu einem zusammenführen (monitor.sh) und planen / cronen. Wie führe ich ein zweites Skript basierend auf dem Ergebnis des ersten Skripts aus? WENN das Ergebnis des ersten Skripts 0 ist, muss der Dienst gestartet werden (das zweite Skript muss ausgeführt werden), wenn das Ergebnis des ersten Skripts 1 zweites Skript ist, muss das Hauptskript nicht ausgeführt und beendet werden.

user321371
quelle

Antworten:

1

Dafür sind Exit-Codes gedacht. Für Ihr Monitorskript könnten wir also Folgendes tun:

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

Wir verwenden für jeden Status, den wir bearbeiten möchten, einen anderen Beendigungscode. Dann für unseren Service Checker:

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

Und jetzt das Skript, das den Job ausführt:

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