Add more complex stop-start behavior
This commit is contained in:
parent
d325f47cd9
commit
dbc9e3f80f
@ -20,6 +20,12 @@
|
|||||||
template: src=eula.txt dest={{ minecraft_home }}/{{ minecraft_name }}/eula.txt
|
template: src=eula.txt dest={{ minecraft_home }}/{{ minecraft_name }}/eula.txt
|
||||||
- name: template out env
|
- name: template out env
|
||||||
template: src=env dest={{ minecraft_home }}/{{ minecraft_name }}/env
|
template: src=env dest={{ minecraft_home }}/{{ minecraft_name }}/env
|
||||||
|
- name: template start script
|
||||||
|
template: src=start-server.sh dest={{ minecraft_home }}/{{ minecraft_name }}/start-server.sh mode="0744"
|
||||||
|
notify: "restart minecraft {{ minecraft_name }}"
|
||||||
|
- name: template stop script
|
||||||
|
template: src=stop-server.sh dest={{ minecraft_home }}/{{ minecraft_name }}/stop-server.sh mode="0744"
|
||||||
|
notify: "restart minecraft {{ minecraft_name }}"
|
||||||
- name: configure server properties
|
- name: configure server properties
|
||||||
lineinfile:
|
lineinfile:
|
||||||
dest: "{{ minecraft_home }}/{{ minecraft_name }}/server.properties"
|
dest: "{{ minecraft_home }}/{{ minecraft_name }}/server.properties"
|
||||||
|
@ -23,14 +23,8 @@ ProtectKernelModules=true
|
|||||||
# Implies MountAPIVFS=yes
|
# Implies MountAPIVFS=yes
|
||||||
ProtectControlGroups=true
|
ProtectControlGroups=true
|
||||||
|
|
||||||
ExecStart=/bin/sh -c '/usr/bin/screen -DmS %i /usr/bin/java -Xms${JRE_XMS} -Xmx${JRE_XMX} -jar server.jar nogui'
|
ExecStart={{ minecraft_home }}/%i/start-server.sh
|
||||||
|
ExecStop={{ minecraft_home }}/%i/stop-server.sh
|
||||||
ExecReload=/usr/bin/screen -p 0 -S %i -X eval 'stuff "reload"\\015'
|
|
||||||
|
|
||||||
ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "say Server is going down: Service was stopped"\\015'
|
|
||||||
ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "save-all"\\015'
|
|
||||||
ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "stop"\\015'
|
|
||||||
ExecStop=/bin/sleep ${MC_RESTART_DELAY}
|
|
||||||
|
|
||||||
Restart=always
|
Restart=always
|
||||||
# Restart after 24hrs
|
# Restart after 24hrs
|
||||||
|
10
templates/start-server.sh
Normal file
10
templates/start-server.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
instance="{{ minecraft_name }}"
|
||||||
|
|
||||||
|
/usr/bin/screen -DmS "$instance" \
|
||||||
|
/usr/bin/java \
|
||||||
|
-Xms"$JRE_XMS" \
|
||||||
|
-Xmx"$JRE_XMX" \
|
||||||
|
-Dfml.queryResult=confirm \
|
||||||
|
-jar server.jar \
|
||||||
|
nogui
|
39
templates/stop-server.sh
Normal file
39
templates/stop-server.sh
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
# vim:ft=bash
|
||||||
|
instance="{{ minecraft_name }}"
|
||||||
|
screen="/usr/bin/screen -p 0 -S $instance"
|
||||||
|
stuff() {
|
||||||
|
[ -z "$1" ] && return 1
|
||||||
|
$screen -X eval "stuff \"$1\"\\015"
|
||||||
|
}
|
||||||
|
# Junk FD used for read waiting
|
||||||
|
exec 1023<> <(:)
|
||||||
|
|
||||||
|
stuff "say Server is going down for maintenance!"
|
||||||
|
|
||||||
|
if [ -n "$MC_RESTART_DELAY" ] && [ "$MC_RESTART_DELAY" -gt 0 ]; then
|
||||||
|
for (( i="$MC_RESTART_DELAY"; i>0; i-- )); do
|
||||||
|
case "$i" in
|
||||||
|
300)
|
||||||
|
stuff "say Server is going down in 5 minutes!"
|
||||||
|
;;
|
||||||
|
60)
|
||||||
|
stuff "say Server is going down in 1 minute!"
|
||||||
|
;;
|
||||||
|
30|10|5|4|3|2)
|
||||||
|
stuff "say Server is going down in "$i" seconds!"
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
stuff "say Server is going down NOW!"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
read -t 1 -u 1023 || :
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
stuff "save-all"
|
||||||
|
read -t 10 -u 1023 || :
|
||||||
|
stuff "stop"
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user