| commit | 0ec4441ee6e76f6f6d61fffd8f3bc1f9c6fe0be4 | [log] [download] |
|---|---|---|
| author | WHR <msl0000023508@gmail.com> | Tue Aug 14 01:26:09 2018 +0800 |
| committer | WHR <msl0000023508@gmail.com> | Tue Aug 14 01:29:39 2018 +0800 |
| tree | 0f0fa8ea7872d99b9424c3c4968e90670274ed1c | |
| parent | 0e5ec82f1b6693b62533f0ab653b4c9d685a9e5f [diff] |
Send SIGKILL only to tmux(1) on stopping timed out
Configuration file /etc/default/minecraft |Variable |Description |Default value | |-------------------------------|-------------------------------------------------------|-----------------------| |MINECRAFT_USER_NAME |The user name to run Minecraft server |minecraft | |MINECRAFT_HOME |Home directory of Minecraft server instances |/home/minecraft | |MINECRAFT_START_COMMAND |Server startup command |exec sh start.sh | |MINECRAFT_USE_TMUX |Enable to uses of tmux(1) |NO | |MINECRAFT_SESSION_NAME |Base session name of tmux(1) sessions |minecraft | |MINECRAFT_ALTERNATIVE_LOG_FILE |Redirect outputs to this file if tmux(1) is not used |/dev/null | |MINECRAFT_SERVERS |Space separated server instances | |
Server instances are directories under MINECRAFT_HOME; each server instance will be started under its instance directory by running MINECRAFT_START_COMMAND. Enabling tmux(1) is recommended if using Bukkit server framework, as this server didn't save worlds when exiting on signals. Session name of each server instance will be ‘MINECRAFT_SESSION_NAME-INSTANCE_NAME’.
/etc/default/minecraft example:
MINECRAFT_HOME=/export/home/minecraft MINECRAFT_SERVERS="1.7-server 1.8-server" MINECRAFT_USE_TMUX=YES
The user (minecraft by default) must have a sh(1) compatible shell in order to run shell commands with the default shell.
The startup script (start.sh by default) must write the PID of server program to server.pid, and must not fork the server program into background.
start.sh example:
#!/bin/sh JAVA_HOME=/opt/jdk1.7.0_80 echo $$ > server.pid exec "$JAVA_HOME/bin/java" -jar /opt/minecraft/minecraft-server-1.7.10.jar --nogui
This is very similar with init.d/minecraft, except the configuration variables are in lower case and set from rc.conf instead of /etc/default/minecraft
Example configuration in rc.conf:
minecraft_enable="YES" minecraft_home="/usr/home/minecraft" minecraft_use_tmux="YES" minecraft_servers="1.7-server 1.8-server"
The user and startup script requirements are same with init.d/minecraft.
minecraft_use_tmux="YES"svccfg(1M) should be used instead of editing configuration file; configuration properties and its default values are:
$ svccfg -s site/minecraft listprop config config application config/alt_log_file astring /dev/null config/session_name astring minecraft config/start_command astring "exec sh start.sh" config/use_tmux boolean false config/user astring minecraft config/home astring /var/games/minecraft config/servers astring
Example configuration:
# svccfg -s site/minecraft setprop config/home = astring: /export/home/minecraft
# svccfg -s site/minecraft setprop config/use_tmux = boolean: true
# svccfg -s site/minecraft setprop config/servers = astring: '("1.7-server" "1.8-server")'
# svcadm enable site/minecraft
Due to some limitations of systemd, many configuration variables used in previous scripts are hardcoded; service user will always be minecraft; home directory is the home directory of user minecraft; start up script is start.sh under instance directory. Two types of services are available: minecraft@.service and minecraft-tmux@.service; use only one type per instance. Like init.d/minecraft, instances are directories under home directory. Referencing an instance in systemd with minecraft@<instance-name>.service or minecraft-tmux@<instance-name>.service. To configure multiple server instances, just enable every instance via systemctl(1).
Example configuration:
# systemctl enable --now minecraft-tmux@1.6-server minecraft@1.7-server minecraft@1.8-server