diff --git a/README.md b/README.md index d63a35b..ff03718 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,9 @@ manually updates ARK server if a new version is available #### arkmanager forceupdate Apply update without check the current version +#### arkmanager safeupdate +Waits for server to perform world save and then updates. + #### arkmanager status Get the status of the server. Show if the process is running, if the server is up and the current version number diff --git a/tools/arkmanager b/tools/arkmanager index d3cea38..8a57114 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -258,6 +258,26 @@ forceUpdate(){ fi } +# +# Waits for server to perform save before update (until save file is newer than 1 minute) +# +safeUpdate(){ + cd "$arkserverroot" + + if isUpdateNeeded; then + while [ ! `find $arkserverroot/ShooterGame/Saved/SavedArks -mmin -1 -name $serverMap.ark` ]; do + echo "$timestamp: Save file older than 1 minute. Delaying update." >> "$logdir/update.log" + sleep 30s + done + echo "$timestamp: Save file newer than 1 minute. Performing an update." >> "$logdir/update.log" + forceUpdate + else + echo "Your server is already up to date! The most recent version is ${bnumber}." + echo "$timestamp: No update needed." >> "$logdir/update.log" + fi +} + + # # Print the status of the server (running? online? version?) # @@ -325,6 +345,7 @@ case "$1" in echo "update Check for a new ARK server version, if needed, stops the server, updates it, and starts it again" echo "forceupdate Apply update without check the current version" echo "checkupdate Check for a new ARK server version" + echo "safeupdate Wait for server to perform world save and update. echo "boradcast PLACEHOLDER, not supported yet" echo "status Returns the status of the current ARK server instance" ;;