First commit
Ensure running and autoshutdown scripts
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.swp
|
||||||
79
autoshutdown.sh
Executable file
79
autoshutdown.sh
Executable file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# If exists tmux session
|
||||||
|
# If Responds to queries
|
||||||
|
|
||||||
|
SERVER_DIR='/home/ubuntu/minecraft/servers/kincls'
|
||||||
|
TMUX_NAME='minecraft kincls server'
|
||||||
|
EMPTY_COUNTER="$SERVER_DIR/empty_counter.txt"
|
||||||
|
|
||||||
|
json_parse() {
|
||||||
|
cat - | python3 -c "import sys, json; print(json.load(sys.stdin)['$1'])"
|
||||||
|
}
|
||||||
|
|
||||||
|
silent_exitcode() {
|
||||||
|
$* > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
empty_count() {
|
||||||
|
if [ ! -f "$EMPTY_COUNTER" ]; then
|
||||||
|
# File not existing
|
||||||
|
echo "0"
|
||||||
|
else
|
||||||
|
cat "$EMPTY_COUNTER"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
empty_incr() {
|
||||||
|
c="$(empty_count)"
|
||||||
|
if [ "$c" -gt 10 ]; then
|
||||||
|
echo "Server empty for more than 10 minutes, shutting down"
|
||||||
|
empty_reset # Needs to be 0 next time server starts
|
||||||
|
tmux send-keys -t "$TMUX_NAME.0" "stop" ENTER
|
||||||
|
sleep 5
|
||||||
|
$(sudo /sbin/shutdown -P +1)
|
||||||
|
else
|
||||||
|
echo "Empty count $c. Incrementing"
|
||||||
|
echo "$((c+1))" > "$EMPTY_COUNTER"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
empty_reset() {
|
||||||
|
echo "Resetting empty counter"
|
||||||
|
echo 0 > "$EMPTY_COUNTER"
|
||||||
|
}
|
||||||
|
|
||||||
|
tmux_running() {
|
||||||
|
tmux ls -F "#{session_name}" | grep -q "$TMUX_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
server_responsive() {
|
||||||
|
silent_exitcode mcstatus localhost ping
|
||||||
|
}
|
||||||
|
|
||||||
|
n_logins="$(w -h | wc -l)"
|
||||||
|
echo "$(date) [$n_logins logins]"
|
||||||
|
|
||||||
|
if tmux_running; then
|
||||||
|
: #echo "Tmux running"
|
||||||
|
else
|
||||||
|
echo "Tmux not running"
|
||||||
|
empty_incr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if server_responsive; then
|
||||||
|
n_players=$(mcstatus localhost json | json_parse player_count)
|
||||||
|
echo "Server responsive. $n_players players online"
|
||||||
|
if [ "$n_players" -gt 0 ] || [ "$n_logins" -gt 0 ]; then
|
||||||
|
# Keep alive if players or ssh sessions active
|
||||||
|
empty_reset
|
||||||
|
else
|
||||||
|
empty_incr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Server unresponsive"
|
||||||
|
empty_incr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
4
ensure_running.sh
Executable file
4
ensure_running.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd servers/kincls
|
||||||
|
tmux new-session -Ad -s "minecraft kincls server" "java -Xmx1024M -Xms1024M -jar server.jar nogui"
|
||||||
Reference in New Issue
Block a user