mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-14 03:38:27 +00:00
Add the option to warn on shutdown and restart
This commit is contained in:
parent
6606ed3cd2
commit
45ace77565
@ -682,6 +682,9 @@ doStartAll(){
|
||||
#
|
||||
doStop() {
|
||||
if isTheServerRunning; then
|
||||
if [ " $* " =~ " --warn " ]; then
|
||||
doWarn "$1"
|
||||
fi
|
||||
tput sc
|
||||
echo "Stopping server..."
|
||||
echo "`timestamp`: stopping" >> "$logdir/$arkmanagerLog"
|
||||
@ -758,9 +761,47 @@ doInstall() {
|
||||
#
|
||||
# Waits for a configurable number of minutes before updating the server
|
||||
#
|
||||
doUpdateWarn(){
|
||||
doWarn(){
|
||||
cd "$arkserverroot"
|
||||
|
||||
local warnmsgmin
|
||||
local warnmsgsec
|
||||
|
||||
if [ "$1" == "update" ]; then
|
||||
if [ -n "$msgWarnUpdateMinutes" ]; then
|
||||
warnmsgmin="$msgWarnUpdateMinutes"
|
||||
else
|
||||
warnmsgmin="This ARK server will shutdown for an update in %d minutes"
|
||||
fi
|
||||
if [ -n "$msgWarnUpdateSeconds" ]; then
|
||||
warnmsgsec="$msgWarnUpdateSeconds"
|
||||
else
|
||||
warnmsgsec="This ARK server will shutdown for an update in %d seconds"
|
||||
fi
|
||||
elif [ "$1" == "restart" ]; then
|
||||
if [ -n "$msgWarnRestartMinutes" ]; then
|
||||
warnmsgmin="$msgWarnRestartMinutes"
|
||||
else
|
||||
warnmsgmin="This ARK server will shutdown for a restart in %d minutes"
|
||||
fi
|
||||
if [ -n "$msgWarnRestartSeconds" ]; then
|
||||
warnmsgsec="$msgWarnRestartSeconds"
|
||||
else
|
||||
warnmsgsec="This ARK server will shutdown for a restart in %d seconds"
|
||||
fi
|
||||
else
|
||||
if [ -n "$msgWarnShutdownMinutes" ]; then
|
||||
warnmsgmin="$msgWarnShutdownMinutes"
|
||||
else
|
||||
warnmsgmin="This ARK server will shutdown in %d minutes"
|
||||
fi
|
||||
if [ -n "$msgWarnShutdownSeconds" ]; then
|
||||
warnmsgsec="$msgWarnShutdownSeconds"
|
||||
else
|
||||
warnmsgsec="This ARK server will shutdown in %d seconds"
|
||||
fi
|
||||
fi
|
||||
|
||||
local pid=`getServerPID`
|
||||
local sleeppid
|
||||
if [ -n "$pid" ]; then
|
||||
@ -774,22 +815,18 @@ doUpdateWarn(){
|
||||
|
||||
for warninterval in "${warnintervals[@]}"; do
|
||||
if [ "`getServerPID`" != "$pid" ]; then
|
||||
echo "Server has stopped. Aborting update"
|
||||
echo "Server has stopped. Aborting $1"
|
||||
return 1
|
||||
fi
|
||||
if (( warnminutes > warninterval )); then
|
||||
sleep 1m &
|
||||
sleeppid=$!
|
||||
if [ -n "$msgWarnUpdateMinutes" ]; then
|
||||
warnmsg="$(printf "$msgWarnUpdateMinutes" "$warnminutes")"
|
||||
else
|
||||
warnmsg="$(printf "This ARK server will shutdown for an update in %d minutes" "$warnminutes")"
|
||||
fi
|
||||
warnmsg="$(printf "$warnmsgmin" "$warnminutes")"
|
||||
doBroadcastWithEcho "$warnmsg"
|
||||
for (( min = warnminutes - 1; min >= warninterval; min-- )); do
|
||||
numplayers=$(numPlayersConnected)
|
||||
if (( numplayers + 0 == 0 )); then
|
||||
echo "Nobody is connected. Updating immediately"
|
||||
echo "Nobody is connected. Shutting down immediately"
|
||||
return 0
|
||||
fi
|
||||
wait $sleeppid
|
||||
@ -811,16 +848,12 @@ doUpdateWarn(){
|
||||
echo "Server has stopped. Aborting update"
|
||||
return 1
|
||||
fi
|
||||
if [ -n "$msgWarnUpdateSeconds" ]; then
|
||||
warnmsg="$(printf "$msgWarnUpdateSeconds" "$warnseconds")"
|
||||
else
|
||||
warnmsg="$(printf "This ARK server will shutdown for an update in %d seconds" "$warnseconds")"
|
||||
fi
|
||||
warnmsg="$(printf "$warnmsgsec" "$warnseconds")"
|
||||
doBroadcastWithEcho "$warnmsg"
|
||||
if (( warnseconds >= 20 )); then
|
||||
numplayers=$(numPlayersConnected)
|
||||
if (( numplayers + 0 == 0 )); then
|
||||
echo "Nobody is connected. Updating immediately"
|
||||
echo "Nobody is connected. Shutting down immediately"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
@ -830,7 +863,7 @@ doUpdateWarn(){
|
||||
fi
|
||||
|
||||
if [ "`getServerPID`" != "$pid" ]; then
|
||||
echo "Server has stopped. Aborting update"
|
||||
echo "Server has stopped. Aborting $1"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@ -952,7 +985,7 @@ doUpdate() {
|
||||
done
|
||||
echo "`timestamp`: Save file newer than 1 minute. Performing an update." >> "$logdir/update.log"
|
||||
elif [ "$updatetype" == "warn" ]; then
|
||||
if ! doUpdateWarn; then
|
||||
if ! doWarn update; then
|
||||
return 1
|
||||
fi
|
||||
elif [ "$updatetype" == "ifempty" ]; then
|
||||
@ -1513,7 +1546,7 @@ while true; do
|
||||
doStopAll
|
||||
shift
|
||||
else
|
||||
doStop
|
||||
doStop stop "${options[@]}"
|
||||
fi
|
||||
;;
|
||||
restart)
|
||||
@ -1521,7 +1554,7 @@ while true; do
|
||||
if [ "$2" == "--all" ]; then
|
||||
doStopAll
|
||||
else
|
||||
doStop
|
||||
doStop restart "${options[@]}"
|
||||
fi
|
||||
echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog"
|
||||
sleep 1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user