mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-27 08:48:27 +00:00
Add cancelshutdown command
This commit is contained in:
parent
9a4211d474
commit
41097175fa
@ -211,6 +211,10 @@ instances.
|
|||||||
Downloads the update but does not apply it. Only has effect
|
Downloads the update but does not apply it. Only has effect
|
||||||
if a staging directory is set.
|
if a staging directory is set.
|
||||||
|
|
||||||
|
`cancelshutdown`::
|
||||||
|
Cancels a pending update / shutdown / restart that was run with
|
||||||
|
the `--warn` option
|
||||||
|
|
||||||
`checkupdate`::
|
`checkupdate`::
|
||||||
Checks if an ARK server update is available
|
Checks if an ARK server update is available
|
||||||
|
|
||||||
|
|||||||
@ -831,7 +831,9 @@ doStop() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [[ -n "$dowarn" ]]; then
|
if [[ -n "$dowarn" ]]; then
|
||||||
doWarn "$1" "$warnreason"
|
if ! doWarn "$1" "$warnreason"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ -n "$dosave" ]]; then
|
if [[ -n "$dosave" ]]; then
|
||||||
doSaveWorld
|
doSaveWorld
|
||||||
@ -910,6 +912,20 @@ doInstall() {
|
|||||||
getCurrentVersion
|
getCurrentVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Cancels a pending shutdown
|
||||||
|
#
|
||||||
|
doCancelShutdown(){
|
||||||
|
if [ -f "${arkserverroot}/.ark-warn.lock" ]; then
|
||||||
|
local lockpid="$(<"${arkserverroot}/.ark-warn.lock")"
|
||||||
|
if [ -n "$lockpid" ]; then
|
||||||
|
kill "$lockpid"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Formats a warning message based on replacement strings
|
# Formats a warning message based on replacement strings
|
||||||
#
|
#
|
||||||
@ -1028,11 +1044,27 @@ doWarn(){
|
|||||||
cd "$arkserverroot"
|
cd "$arkserverroot"
|
||||||
|
|
||||||
(
|
(
|
||||||
|
echo "$$" >"${arkserverroot}/.ark-warn.lock.$$" 2>/dev/null
|
||||||
|
while true; do
|
||||||
|
if ! ln "${arkserverroot}/.ark-warn.lock.$$" "${arkserverroot}/.ark-warn.lock" 2>/dev/null; then
|
||||||
|
local lockpid="$(<"${arkserverroot}/.ark-warn.lock")"
|
||||||
|
if [ -n "$lockpid" ] && [ "$lockpid" != "$$" ] && kill -0 "$lockpid" 2>/dev/null; then
|
||||||
|
echo "Shutdown warning already in progress (PID: $lockpid)"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock.$$" 2>/dev/null
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock.$$"
|
||||||
|
|
||||||
update_cancelled(){
|
update_cancelled(){
|
||||||
if [ -n "$msgUpdateCancelled" ]; then
|
if [ -n "$msgUpdateCancelled" ]; then
|
||||||
msg="${msgUpdateCancelled//%s/$1}"
|
msg="${msgUpdateCancelled//%s/$1}"
|
||||||
else
|
else
|
||||||
msg="Update cancelled by operator ($1)"
|
msg="Shutdown cancelled by operator ($1)"
|
||||||
fi
|
fi
|
||||||
doBroadcastWithEcho "${msg}"
|
doBroadcastWithEcho "${msg}"
|
||||||
}
|
}
|
||||||
@ -1056,6 +1088,7 @@ doWarn(){
|
|||||||
for warninterval in "${warnintervals[@]}"; do
|
for warninterval in "${warnintervals[@]}"; do
|
||||||
if [ "`getServerPID`" != "$pid" ]; then
|
if [ "`getServerPID`" != "$pid" ]; then
|
||||||
echo "Server has stopped. Aborting $1"
|
echo "Server has stopped. Aborting $1"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if (( warnminutes >= warninterval )); then
|
if (( warnminutes >= warninterval )); then
|
||||||
@ -1067,6 +1100,7 @@ doWarn(){
|
|||||||
echo "There are ${numplayers} players connected"
|
echo "There are ${numplayers} players connected"
|
||||||
if (( (numplayers + 0) == 0 )); then
|
if (( (numplayers + 0) == 0 )); then
|
||||||
doBroadcastWithEcho "Nobody is connected. Shutting down immediately"
|
doBroadcastWithEcho "Nobody is connected. Shutting down immediately"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
wait $sleeppid
|
wait $sleeppid
|
||||||
@ -1086,6 +1120,7 @@ doWarn(){
|
|||||||
sleeppid=$!
|
sleeppid=$!
|
||||||
if [ "`getServerPID`" != "$pid" ]; then
|
if [ "`getServerPID`" != "$pid" ]; then
|
||||||
echo "Server has stopped. Aborting update"
|
echo "Server has stopped. Aborting update"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
printWarnMessage "$1" "$2" "seconds" "$warnseconds"
|
printWarnMessage "$1" "$2" "seconds" "$warnseconds"
|
||||||
@ -1094,6 +1129,7 @@ doWarn(){
|
|||||||
echo "There are ${numplayers} players connected"
|
echo "There are ${numplayers} players connected"
|
||||||
if (( (numplayers + 0) == 0 )); then
|
if (( (numplayers + 0) == 0 )); then
|
||||||
doBroadcastWithEcho "Nobody is connected. Shutting down immediately"
|
doBroadcastWithEcho "Nobody is connected. Shutting down immediately"
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -1102,6 +1138,8 @@ doWarn(){
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "${arkserverroot}/.ark-warn.lock"
|
||||||
|
|
||||||
if [ "`getServerPID`" != "$pid" ]; then
|
if [ "`getServerPID`" != "$pid" ]; then
|
||||||
echo "Server has stopped. Aborting $1"
|
echo "Server has stopped. Aborting $1"
|
||||||
return 1
|
return 1
|
||||||
@ -2204,6 +2242,9 @@ while true; do
|
|||||||
doStop restart "${options[@]}"
|
doStop restart "${options[@]}"
|
||||||
echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog"
|
echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog"
|
||||||
;;
|
;;
|
||||||
|
cancelshutdown)
|
||||||
|
doCancelShutdown "${options[@]}"
|
||||||
|
;;
|
||||||
install)
|
install)
|
||||||
doInstall
|
doInstall
|
||||||
;;
|
;;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user