Um das Ergebnis von versch. Bedingungen abhängig zu machen, darfst du die Bedingungen nicht nacheinander abfolgen lassen, sondern musst sie verschachteln.
Du prüfst, ob SpectroSERVER läuft. Wenn ja, prüfst du, ob AlarmNotifier läuft. Wenn ja, gehen beide, sonst nur der Spectro.
Läuft der SpectroSERVER nicht, muss der AlarmNotifier nicht mehr geprüft werden, dann kannst du gleich zur Ausgabe schreiten.
Das folgende Script macht das wie gewünscht ahaaaber: Das funktioniert natürlich nur, wenn beide Dienste auf ein und demselben Server laufen. Läuft der AlarmNotifier auf einem anderen Rechner als der SpectroSERVER. ist der gesamte Ansatz verkehrt. In dem Fall müsstest du mit remote Shells arbeiten. Die Logik wäre im Grunde die gleiche, aber die Abfrage von AlarmNotifier würde so einfach über eine lokale pgrep-Abfrage natürlich nicht funktionieren.
#!/bin/sh
hostname=`hostname`
echo "$hostname"
if pgrep SpectroSERVER
then
if pgrep AlarmNotifier
then
echo "S and A running"
echo "S and A are running on host $hostname"| mailx -s "S and A are running" [email protected], [email protected]
echo "S and A are running" | /usr/bin/logger -p local6.info -t info
else
echo "S running, A not running"
echo "S is running on host $hostname, A not"| mailx -s "S running A not" [email protected], [email protected]
echo "S running A not" | /usr/bin/logger -p local6.info -t info
fi
fi
else
echo "S is broken"
echo "S is broken on host $hostname, A not"| mailx -s "S is broken" [email protected], [email protected]
echo "S is broken" | /usr/bin/logger -p local6.info -t info
fi
exit