diff --git a/ctdb/config/debug-hung-script.sh b/ctdb/config/debug-hung-script.sh old mode 100644 new mode 100755 index dcf68ba89e5..32dbd5f863a --- a/ctdb/config/debug-hung-script.sh +++ b/ctdb/config/debug-hung-script.sh @@ -1,4 +1,19 @@ #!/bin/sh -echo "Pstree output for the hung script:" -pstree -p -a $1 +( + flock --wait 2 9 || exit 1 + + echo "===== Start of hung script debug for PID=\"$1\", event\"$2\" =====" + + echo "pstree -p -a ${1}:" + pstree -p -a $1 + + echo "ctdb scriptstatus ${2}:" + # No use running several of these in parallel if, say, "releaseip" + # event hangs for multiple IPs. In that case the output would be + # interleaved in the log and would just be confusing. + ctdb scriptstatus "$2" + + echo "===== End of hung script debug for PID=\"$1\", event\"$2\" =====" + +) 9>"${CTDB_VARDIR}/debug-hung-script.lock"