Die Monitor_stop-Methode verwendet pmfadm -q, um festzustellen, ob das Testsignal läuft, und um es gegebenenfalls unter Verwendung von pmfadm -s zu stoppen. Wenn das Testsignal bereits gestoppt wurde, wird die Methode dennoch mit Erfolg beendet, was die Idempotenz der Methode sicherstellt.
Verwenden Sie auf jeden Fall das KILL-Signal mit pmfadm, um das Testsignal zu stoppen, und kein Signal, das maskiert werden kann, wie TERM. Andernfalls kann die Monitor_stop-Methode endlos hängen und schließlich eine Zeitüberschreitung stattfinden. Der Grund besteht darin, dass die PROBE-Methode scha_control() aufruft, wenn der Datendienst neu gestartet werden soll oder ein Failover des Datendienstes stattfinden soll. Wenn scha_control() Monitor_stop als Teil des Prozesses aufruft, der den Datendienst offline bringt, und wenn Monitor_stop ein Signal verwendet, das maskiert sein kann, hängt Monitor_stop und wartet, bis scha_control() vollständig ausgeführt wurde, und scha_control() hängt und wartet, bis Monitor_stop vollständig ausgeführt wurde.
# See if the monitor is running, and if so, kill it. if pmfadm -q $PMF_TAG; then pmfadm -s $PMF_TAG KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Could not stop monitor for resource " \ $RESOURCE_NAME exit 1 else # could successfully stop the monitor. Log a message. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Monitor for resource " $RESOURCE_NAME \ " successfully stopped" fi fi exit 0