/ctdb/events.d/41.httpd
http://github.com/brinkman83/bashrc · Shell · 68 lines · 47 code · 16 blank · 5 comment · 5 complexity · 873071d66dff7e5868899264bf2607c1 MD5 · raw file
- #!/bin/sh
- # event script to manage httpd in a cluster environment
- . $CTDB_BASE/functions
- detect_init_style
- case $CTDB_INIT_STYLE in
- redhat)
- service_name="httpd"
- service_config="http"
- ;;
- suse|debian|*)
- service_name="apache2"
- service_config="apache2"
- ;;
- esac
- # RHEL5 sometimes use a SIGKILL to terminate httpd, which then leaks
- # semaphores. This is a hack to clean them up.
- cleanup_httpd_semaphore_leak() {
- killall -q -0 "$service_name" ||
- for i in $(ipcs -s | awk '$3 == "apache" { print $2 }') ; do
- ipcrm -s $i
- done
- }
- ##########
- service_start="cleanup_httpd_semaphore_leak; service $service_name start"
- service_stop="service $service_name stop; killall -q -9 $service_name || true"
- service_reconfigure="service $service_name restart"
- loadconfig
- ctdb_start_stop_service
- is_ctdb_managed_service || exit 0
- case "$1" in
- startup)
- ctdb_service_start
- ;;
- shutdown)
- ctdb_service_stop
- ;;
- monitor)
- if ctdb_service_needs_reconfigure ; then
- ctdb_service_reconfigure
- exit 0
- fi
- if ! ctdb_check_tcp_ports 80 ; then
- echo "HTTPD is not running. Trying to restart HTTPD."
- ctdb_service_start
- exit 1
- fi
- ;;
- *)
- ctdb_standard_event_handler "$@"
- ;;
- esac
- exit 0