diff --git a/tools/arkmanager b/tools/arkmanager index 1175383..c89b000 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -150,9 +150,6 @@ arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer appid="${appid:-376030}" mod_appid="${mod_appid:-346110}" -arkautorestartfile="${arkautorestartfile:-ShooterGame/Saved/.autorestart}" -arkserverpidfile="${arkserverpidfile:-ShooterGame/Saved/.arkserver.pid}" -arkmanagerpidfile="${arkmanagerpidfile:-ShooterGame/Saved/.arkmanager.pid}" install_bindir="${install_bindir:-${0%/*}}" install_libexecdir="${install_libexecdir:-${install_bindir%/*}/libexec/arkmanager}" @@ -516,7 +513,17 @@ function getServerPID(){ return fi fi - ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}' + if [ -f "${arkserverroot}/${arkserveroldpidfile}" ]; then + serverpid="$(<"${arkserverroot}/${arkserveroldpidfile}")" + if kill -0 "$serverpid" >/dev/null 2>&1; then + echo $serverpid + return + fi + fi + + if [ -z "$arkopt_clusterid" ]; then + ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}' + fi } # @@ -875,7 +882,7 @@ doRun() { # start function # doStart() { - touch "${arkserverroot}/.startAfterUpdate" + touch "${arkserverroot}/.startAfterUpdate-${instance}" if [ -f "${arkserverroot}/.ark-update.lock" ]; then local updatepid="$(<"${arkserverroot}/.ark-update.lock")" @@ -943,7 +950,7 @@ doStartAll(){ # doStop() { if [ "$1" != "update" ]; then - rm -f "${arkserverroot}/.startAfterUpdate" + rm -f "${arkserverroot}/.startAfterUpdate-${instance}" fi if isTheServerRunning; then @@ -997,6 +1004,10 @@ doStop() { fi fi + rm -f "${arkserverroot}/${arkserverpidfile}" + rm -f "${arkserverroot}/${arkserveroldpidfile}" + rm -f "${arkserverroot}/${arkmanagerpidfile}" + tput rc; tput ed; echo "The server has been stopped" echo "`timestamp`: stopped" >> "$logdir/$arkmanagerLog" @@ -1540,6 +1551,9 @@ doUpdate() { fi done fi + if [ -z "$bgupdate" ]; then + touch "${arkserverroot}/steamapps/appmanifest_${appid}.acf" + fi else echo "Your server is already up to date! The most recent version is ${bnumber}." echo "`timestamp`: No update needed." >> "$logdir/update.log" @@ -1550,9 +1564,8 @@ doUpdate() { if ! isTheServerRunning; then # we restart the server only if it was started before the update if [ -z "$noautostart" ]; then - if [ $serverWasAlive -eq 1 ] || [ -f "${arkserverroot}/.startAfterUpdate" ]; then - rm -f "${arkserverroot}/.startAfterUpdate" - rm -f "${arkserverroot}/.ark-update.lock" + if [ $serverWasAlive -eq 1 ] || [ -f "${arkserverroot}/.startAfterUpdate-${instance}" ]; then + rm -f "${arkserverroot}/.startAfterUpdate-${instance}" doStart --noautoupdate fi fi @@ -2377,6 +2390,10 @@ useConfig() { echo "Error: arkserverroot not set" exit 1 fi + arkautorestartfile="${arkautorestartfile:-ShooterGame/Saved/.autorestart-${1}}" + arkserverpidfile="${arkserverpidfile:-ShooterGame/Saved/.arkserver-${1}.pid}" + arkserveroldpidfile="ShooterGame/Saved/.arkserver.pid" + arkmanagerpidfile="${arkmanagerpidfile:-ShooterGame/Saved/.arkmanager-${1}.pid}" } showUsage() {