Appendix E. Init Script LSB Compliance
The relevant part of the
LSB specifications includes a description of all the return codes listed here.
Assuming some_service
is configured correctly and currently inactive, the following sequence will help you determine if it is LSB-compatible:
Start (stopped):
# /etc/init.d/some_service start ; echo "result: $?"
Did the service start?
Did the command print result: 0 (in addition to its usual output)?
Status (running):
# /etc/init.d/some_service status ; echo "result: $?"
Did the script accept the command?
Did the script indicate the service was running?
Did the command print result: 0 (in addition to its usual output)?
Start (running):
# /etc/init.d/some_service start ; echo "result: $?"
Is the service still running?
Did the command print result: 0 (in addition to its usual output)?
Stop (running):
# /etc/init.d/some_service stop ; echo "result: $?"
Was the service stopped?
Did the command print result: 0 (in addition to its usual output)?
Status (stopped):
# /etc/init.d/some_service status ; echo "result: $?"
Did the script accept the command?
Did the script indicate the service was not running?
Did the command print result: 3 (in addition to its usual output)?
Stop (stopped):
# /etc/init.d/some_service stop ; echo "result: $?"
Is the service still stopped?
Did the command print result: 0 (in addition to its usual output)?
Status (failed):
This step is not readily testable and relies on manual inspection of the script.
The script can use one of the error codes (other than 3) listed in the LSB spec to indicate that it is active but failed. This tells the cluster that before moving the resource to another node, it needs to stop it on the existing one first.
If the answer to any of the above questions is no, then the script is not LSB-compliant. Your options are then to either fix the script or write an OCF agent based on the existing script.