Managing HP Serviceguard for Linux, Tenth Edition, September 2012

sg_log 5 "stop_command"
# log current PEV_MONITORING_INTERVAL value, PEV_ attribute can be changed
# while the package is running
sg_log 0 "PEV_MONITORING_INTERVAL for $SG_PACKAGE_NAME is $PEV_MONITORING_INTERVAL"
return 0
}
typeset -i exit_val=0
case ${1} in
start)
start_command $*
exit_val=$?
;;
stop)
stop_command $*
exit_val=$?
;;
validate)
validate_command $*
exit_val=$?
;;
*)
sg_log 0 "Unknown entry point $1"
;;
esac
exit $exit_val
Using Serviceguard Commands in an External Script
You can use Serviceguard commands (such as cmmodpkg) in an external script. These
commands must not interact with the package itself (that is, the package that runs the
external script) but can interact with other packages. But be careful how you code these
interactions.
If a Serviceguard command interacts with another package, be careful to avoid command
loops. For instance, a command loop might occur under the following circumstances.
Suppose a pkg1 script does a cmmodpkg -d of pkg2, and a pkg2 script does a
cmmodpkg -d of pkg1. If both pkg1 and pkg2 start at the same time, the pkg1 script
now tries to cmmodpkg pkg2. But that cmmodpkg command has to wait for pkg2 startup
to complete. The pkg2 script tries to cmmodpkg pkg1, but pkg2 has to wait for pkg1
startup to complete, thereby causing a command loop.
To avoid this situation, it is a good idea to specify a run_script_timeout and
halt_script_timeout for all packages, especially packages that use Serviceguard
commands in their external scripts. If a timeout is not specified and your package has a
command loop as described above, inconsistent results can occur, including a hung
cluster.
Determining Why a Package Has Shut Down
You can use an external script (or CUSTOMER DEFINED FUNCTIONS area of a legacy
package control script) to find out why a package has shut down.
150 Planning and Documenting an HA Cluster