diff --git a/startstop.build.sh b/startstop.build.sh index 210f1ca..5e94bcc 100755 --- a/startstop.build.sh +++ b/startstop.build.sh @@ -147,6 +147,42 @@ srv_generic_status() { fi } +srv_generic_okfail() { + local fail + fail=0 + if [[ -s "\${PGIDFILE}" ]]; then + local pgid + read -a pgid < "\${PGIDFILE}" + local pids + pids=\$(pgrep -g \${pgid}||true) + if [[ -n \${pids} ]]; then + ps -f --no-headers --pid \${pids}>/dev/null||true + fail=\$? + else + fail=1 + fi + if [[ \$fail != 0 ]]; then + echo "FAIL \${srv} processs group \${pgid} has no running processes for \${PGIDFILE}" + else + echo "OK \${srv}" + fi + else + if [[ -s "\${PIDFILE}" ]]; then + local pid + read -a pid < "\${PIDFILE}" + ps -f --pid \${pid} --ppid \${pid}>/dev/null||true + fail=\$? + else + fail=1 + fi + if [[ \$fail != 0 ]]; then + echo "FAIL \${srv} no pgid or pid file found: \${PGIDFILE} \${PIDFILE}" + else + echo "OK \${srv}" + fi + fi +} + srv_generic_stop() { if [[ -s "\${PGIDFILE}" ]]; then local pgid @@ -193,7 +229,7 @@ if [[ \${srv} = 'all' ]]; then fi for srv in \${_srv[@]}; do - echo "### ./startstop.sh \${cmd} \${srv}" + # echo "### ./startstop.sh \${cmd} \${srv}" "${PROJECT}"/startstop.sh \${cmd} \${srv} || echo "RET: $?" done exit