From 2110bc7fa6ce93f03087bd036b07901aeec5cf17 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Mon, 20 Jul 2015 10:51:56 +1000 Subject: [PATCH 1/4] User SIGINT instead of SIGKILL to stop server --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 8acd5aa..e7e1fab 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -328,7 +328,7 @@ doStop() { echo "Stopping server..." # kill the server with the PID PID=`ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}'` - kill -9 $PID + kill -INT $PID tput rc; tput ed; echo "The server has been stopped" From 3759904f12f3411c3967291fba800ae8bb77cbfd Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 25 Jul 2015 16:31:08 +1000 Subject: [PATCH 2/4] Change isTheServerRunning to be consistent with doStop --- tools/arkmanager | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index e7e1fab..bc1b69c 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -243,14 +243,22 @@ function getAvailableVersion(){ return $bnumber } +# +# Get the PID of the server process +# +function getServerPID(){ + ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}' +} + # # Check id the server process is alive # function isTheServerRunning(){ - SERVICE="ShooterGameServer" - ps aux | grep -v grep | grep $SERVICE > /dev/null - result=$? - return $result + if [ -n "`getServerPID`" ]; then + return 0 + else + return 1 + fi } # @@ -327,7 +335,7 @@ doStop() { tput sc echo "Stopping server..." # kill the server with the PID - PID=`ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}'` + PID=`getServerPID` kill -INT $PID tput rc; tput ed; From ac41f14700639da5e130ae856ccac3b682d80e31 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 25 Jul 2015 16:33:03 +1000 Subject: [PATCH 3/4] Wait for server to stop --- tools/arkmanager | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index bc1b69c..c81b75c 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -334,13 +334,27 @@ doStop() { if isTheServerRunning; then tput sc echo "Stopping server..." + echo "`timestamp`: stopping" >> "$logdir/$arkmanagerLog" # kill the server with the PID PID=`getServerPID` kill -INT $PID + for (( i = 0; i < 10; i++ )); do + sleep 1 + if ! isTheServerRunning; then + break + fi + done + + if isTheServerRunning; then + tput rc + echo "Killing server..." + kill -KILL $PID + fi + tput rc; tput ed; echo "The server has been stopped" - echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog" + echo "`timestamp`: stopped" >> "$logdir/$arkmanagerLog" else echo "The server is already stopped" fi From f2ff580a90e11879a24a2b55f34fe61e467db727 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 25 Jul 2015 17:35:02 +1000 Subject: [PATCH 4/4] Reduce restart delay to 1 second --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index c81b75c..6e9c1e5 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -585,7 +585,7 @@ case "$1" in restart) doStop echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog" - sleep 10 + sleep 1 doStart echo "`timestamp`: start" >> "$logdir/$arkmanagerLog" echo "`timestamp`: restart" >> "$logdir/$arkmanagerLog"