Add timeouts.
This commit is contained in:
parent
54060aada6
commit
2d94825d17
@ -39,6 +39,9 @@ fi
|
|||||||
: ${VNC_HEIGHT:="1080"}
|
: ${VNC_HEIGHT:="1080"}
|
||||||
: "${CD:=}"
|
: "${CD:=}"
|
||||||
|
|
||||||
|
: ${SHUTDOWN_TIMEOUT:="600"} # 10 minutes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############## Setup #########################
|
############## Setup #########################
|
||||||
|
|
||||||
@ -146,17 +149,38 @@ function stop_one {
|
|||||||
|
|
||||||
if ps -p "$bhyve_pid" >/dev/null; then
|
if ps -p "$bhyve_pid" >/dev/null; then
|
||||||
# Send ACPI shutdown command
|
# Send ACPI shutdown command
|
||||||
log "Sending ACPI shutdown to $bhyve_pid."
|
log "Sending ACPI shutdown to ${name}:${bhyve_pid}."
|
||||||
kill -SIGTERM "$bhyve_pid"
|
kill -SIGTERM "$bhyve_pid"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local timeout_start timeout_end
|
||||||
|
timeout_start=$(date +%s)
|
||||||
while ps -p "$bhyve_pid" >/dev/null; do
|
while ps -p "$bhyve_pid" >/dev/null; do
|
||||||
log "Waiting for $bhyve_pid to exit."
|
timeout_end=$(date +%s)
|
||||||
|
if [ $((timeout_end-timeout_start)) -ge "$SHUTDOWN_TIMEOUT" ]; then
|
||||||
|
log "${name}:${bhyve_pid} took more than $SHUTDOWN_TIMEOUT seconds to shut down. Hard powering down."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Waiting for ${name}:${bhyve_pid} to exit."
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
bhyvectl "--vm=$name" --destroy || true
|
bhyvectl "--vm=$name" --destroy || true
|
||||||
|
|
||||||
|
local timeout_start timeout_end
|
||||||
|
timeout_start=$(date +%s)
|
||||||
|
while ps -p "$bhyve_pid" >/dev/null; do
|
||||||
|
timeout_end=$(date +%s)
|
||||||
|
if [ $((timeout_end-timeout_start)) -ge "$SHUTDOWN_TIMEOUT" ]; then
|
||||||
|
log "${name}:${bhyve_pid} took more than $SHUTDOWN_TIMEOUT seconds to hard power down. Giving up."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Waiting for ${name}:${bhyve_pid} to hard power down."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
rm -f "$pidfile"
|
rm -f "$pidfile"
|
||||||
|
|
||||||
log "Finished stopping $name."
|
log "Finished stopping $name."
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user