Managing HP Serviceguard for Linux, Tenth Edition, September 2012

NOTE: After the package run script has finished its work, it exits, which means that the
script is no longer executing once the package is running normally. After the script exits,
the PIDs of the services started by the script are monitored by the package manager
directly. If the service dies, the package manager will then run the package halt script
or, if service_fail_fast_enabled (page 217) is set to yes, it will halt the node on
which the package is running. If a number of restarts is specified for a service in the
package control script, the service may be restarted if the restart count allows it, without
re-running the package run script.
Normal and Abnormal Exits from the Run Script
Exit codes on leaving the run script determine what happens to the package next. A
normal exit means the package startup was successful, but all other exits mean that the
start operation did not complete successfully.
0—normal exit. The package started normally, so all services are up on this node.
1—abnormal exit, also known as no_restart exit. The package did not complete
all startup steps normally. Services are killed, and the package is disabled from
failing over to other nodes.
2—alternative exit, also known as restart exit. There was an error, but the
package is allowed to start up on another node. You might use this kind of exit from
a customer defined procedure if there was an error, but starting the package on
another node might succeed. A package with a restart exit is disabled from
running on the local node, but can still run on other nodes.
Timeout—Another type of exit occurs when the run_script_timeout is exceeded.
In this scenario, the package is killed and disabled globally. It is not disabled on
the current node, however. The package script may not have been able to clean up
some of its resources such as LVM volume groups or package mount points, so
before attempting to start up the package on any node, be sure to check whether
any resources for the package need to be cleaned up.
Service Startup with cmrunserv
Within the package control script, the cmrunserv command starts up the individual
services. This command is executed once for each service that is coded in the file. You
can configure a number of restarts for each service. The cmrunserv command passes
this number to the package manager, which will restart the service the appropriate
number of times if the service should fail. The following are some typical settings in a
legacy package; for more information about configuring services in modular packages,
see the discussion starting with service_name” (page 215) in Chapter 6, and the
comments in the package configuration template file.
SERVICE_RESTART[0]=" " ; do not restart
SERVICE_RESTART[0]="-r <n>" ; restart as many as <n> times
SERVICE_RESTART[0]="-R" ; restart indefinitely
How Packages Run 63