Loading src/power.sh +16 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ _trap() { done } app() { if [[ "$APP" == "QEMU" ]]; then echo "the VM" && return 0 fi echo "$APP" && return 0 } finish() { local i=0 Loading @@ -29,7 +37,7 @@ finish() { if [ -s "$QEMU_PID" ]; then if read -r pid <"$QEMU_PID"; then if [ -n "$pid" ] && isAlive "$pid"; then echo && error "Forcefully terminating QEMU, reason: $reason..." echo && error "Forcefully terminating $(app), reason: $reason..." { kill -9 -- "$pid" || :; } 2>/dev/null fi fi Loading @@ -39,7 +47,7 @@ finish() { closeNetwork if [ -n "$pid" ] && ! waitPid "$pid" 100; then warn "Timed out while waiting for QEMU to exit!" warn "Timed out while waiting for $(app) to exit!" fi echo && echo "❯ Shutdown completed!" Loading Loading @@ -74,15 +82,16 @@ _graceful_shutdown() { if [ ! -s "$QEMU_PID" ] || ! read -r pid <"$QEMU_PID"; then warn "QEMU PID file ($QEMU_PID) does not exist?" finish "$code" && return "$code" finish "$code" fi if [ -z "$pid" ] || ! isAlive "$pid"; then warn "QEMU process with PID $pid does not exist?" finish "$code" && return "$code" finish "$code" fi local cnt=0 abort=0 factor=2 offset=3 min max [[ "$TIMEOUT" =~ ^[0-9]+$ ]] || TIMEOUT=13 [ "$TIMEOUT" -ge 15 ] && factor=3 && offset=4 [ "$TIMEOUT" -ge 30 ] && factor=4 && offset=5 Loading @@ -102,10 +111,10 @@ _graceful_shutdown() { if [ "$cnt" -ne "$abort" ]; then if [ "$cnt" -gt 0 ]; then info "Waiting for VM to shutdown... ($cnt/$max)" info "Waiting for $(app) to shut down... ($cnt/$max)" fi else info "QEMU is still running, sending SIGTERM... ($cnt/$max)" info "$(app) is still running, sending SIGTERM... ($cnt/$max)" { kill -15 -- "$pid" || true; } 2>/dev/null fi Loading @@ -119,7 +128,7 @@ _graceful_shutdown() { done finish "$code" && return "$code" finish "$code" } [[ "$SHUTDOWN" != [Yy1]* ]] && return 0 Loading Loading
src/power.sh +16 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ _trap() { done } app() { if [[ "$APP" == "QEMU" ]]; then echo "the VM" && return 0 fi echo "$APP" && return 0 } finish() { local i=0 Loading @@ -29,7 +37,7 @@ finish() { if [ -s "$QEMU_PID" ]; then if read -r pid <"$QEMU_PID"; then if [ -n "$pid" ] && isAlive "$pid"; then echo && error "Forcefully terminating QEMU, reason: $reason..." echo && error "Forcefully terminating $(app), reason: $reason..." { kill -9 -- "$pid" || :; } 2>/dev/null fi fi Loading @@ -39,7 +47,7 @@ finish() { closeNetwork if [ -n "$pid" ] && ! waitPid "$pid" 100; then warn "Timed out while waiting for QEMU to exit!" warn "Timed out while waiting for $(app) to exit!" fi echo && echo "❯ Shutdown completed!" Loading Loading @@ -74,15 +82,16 @@ _graceful_shutdown() { if [ ! -s "$QEMU_PID" ] || ! read -r pid <"$QEMU_PID"; then warn "QEMU PID file ($QEMU_PID) does not exist?" finish "$code" && return "$code" finish "$code" fi if [ -z "$pid" ] || ! isAlive "$pid"; then warn "QEMU process with PID $pid does not exist?" finish "$code" && return "$code" finish "$code" fi local cnt=0 abort=0 factor=2 offset=3 min max [[ "$TIMEOUT" =~ ^[0-9]+$ ]] || TIMEOUT=13 [ "$TIMEOUT" -ge 15 ] && factor=3 && offset=4 [ "$TIMEOUT" -ge 30 ] && factor=4 && offset=5 Loading @@ -102,10 +111,10 @@ _graceful_shutdown() { if [ "$cnt" -ne "$abort" ]; then if [ "$cnt" -gt 0 ]; then info "Waiting for VM to shutdown... ($cnt/$max)" info "Waiting for $(app) to shut down... ($cnt/$max)" fi else info "QEMU is still running, sending SIGTERM... ($cnt/$max)" info "$(app) is still running, sending SIGTERM... ($cnt/$max)" { kill -15 -- "$pid" || true; } 2>/dev/null fi Loading @@ -119,7 +128,7 @@ _graceful_shutdown() { done finish "$code" && return "$code" finish "$code" } [[ "$SHUTDOWN" != [Yy1]* ]] && return 0 Loading