diff --git a/README.md b/README.md index 76e1cb9..f9a1662 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,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 e7b05e5..2497345 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -306,6 +306,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?) # @@ -396,6 +416,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" echo "upgrade Check for a new ARK Server Tools version and upgrades it if needed"