Stop 메소드는 데이터 서비스를 중지하기 위한 2계층 방식, 즉 pmfadm을 통해 SIGTERM 신호를 사용하는 순차적이거나 완만한 방식과 SIGKILL 신호를 사용하는 돌발적이거나 하드한 방식을 제공합니다. Stop 메소드는 Stop_timeout 값(Stop 메소드가 반환되어야 하는 시간)을 가져옵니다. 그런 다음 Stop 메소드는 다음 샘플과 같이 이 시간의 80%를 완만하게 중지하는 데 할당하고 15%를 돌발적으로 중지하는 데 할당합니다(5%는 예약됨).
STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAM? ((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100)) ((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100))
Stop 메소드는 pmfadm -q를 사용하여 DNS 데몬이 실행 중인지 확인합니다. DNS 데몬이 실행 중이면 Stop 메소드는 우선적으로 DNS 프로세스를 종료하기 위해 pmfadm -s를 사용하여 TERM 신호를 보냅니다. 시간 초과값의 80%가 지난 후에도 이 신호가 프로세스를 종료하지 못할 경우 Stop은 SIGKILL 신호를 보냅니다. 시간 초과값의 15% 이내에 이 신호도 프로세스를 종료하지 못할 경우 이 메소드는 오류 메시지를 기록하고 오류 상태로 종료합니다.
pmfadm이 프로세스를 종료할 경우 이 메소드는 프로세스가 중지되었다는 메시지를 기록하고 성공 상태로 종료합니다.
DNS 프로세스가 실행 중이 아니면 이 메소드는 DNS 프로세스가 실행 중이 아니라는 메시지를 기록하고 성공 상태로 종료합니다. 다음 코드 샘플은 Stop 메소드에서 pmfadm을 사용하여 DNS 프로세스를 중지하는 방법을 보여줍니다.
# See if in.named is running, and if so, kill it. if pmfadm -q $PMF_TAG; then # Send a SIGTERM signal to the data service and wait for 80% of the # total timeout value. pmfadm -s $RESOURCE_NAME.named -w $SMOOTH_TIMEOUT TERM if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ “${ARGV0} Failed to stop HA-DNS with SIGTERM; Retry with \ SIGKILL” # Since the data service did not stop with a SIGTERM signal, use # SIGKILL now and wait for another 15% of the total timeout value. pmfadm -s $PMF_TAG -w $HARD_TIMEOUT KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] “${ARGV0} Failed to stop HA-DNS; Exiting UNSUCCESFUL” exit 1 fi fi else # The data service is not running as of now. Log a message and # exit success. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ “HA-DNS is not started” # Even if HA-DNS is not running, exit success to avoid putting # the data service resource in STOP_FAILED State. exit 0 fi # Could successfully stop DNS. Log a message and exit success. logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ “HA-DNS successfully stopped” exit 0 |