警告
因为这是Wiki的一个条目,可以在任何时间内被任何人编辑,因此建议你不要完全使用这个脚本,而是将其当作编写脚本的指导手册看待。
这是一个 Minecraft 服务器 rc.d 的 FreeBSD 脚本示例。
安装[]
使用 adduser 来创建一个名为 minecraft 的新用户,新用户根目录指定为 /srv/minecraft。
保证你的 /srv 文件系统拥有足够的空间(约 100-200MB ,取决于你的需要) - df -h 将会显示有多少可用空间。
如果必要,安装 Java。端口在 /usr/ports/java/jdk16。
在 root 运行:
# cd /usr/ports/sysutils/screen && make install clean
# cd /srv/minecraft
# fetch https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar
# chown minecraft:minecraft *
# fetch -o /usr/local/etc/rc.d/minecraft http://vidya.dyndns.org/stuff/minecraft
# chmod 0555 /usr/local/etc/rc.d/minecraft
如果你以及拥有了服务器配置文件、世界文件等,将它们复制到 /srv/minecraft ,并且将它们的所有权给予你的 minecraft 用户。
编辑 /etc/rc.conf.local (如果不存在就新建),并添加下列行:
minecraft_enable="yes"
服务器现在会开始启动了。为了启动服务器,检查状态,然后关闭,使用下列命令:
# /usr/local/etc/rc.d/minecraft start
# /usr/local/etc/rc.d/minecraft status
# /usr/local/etc/rc.d/minecraft stop
或:
# service minecraft start
# service minecraft status
# service minecraft stop
脚本[]
#!/bin/sh
#
# PROVIDE: minecraft
# REQUIRE: LOGIN DAEMON NETWORKING mountcritlocal
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local to enable the minecraft server:
#
# minecraft_enable="YES"
# minecraft_user=""
# minecraft_chdir=""
# minecraft_path=""
# minecraft_flags=""
#
# For default setup, create a user named 'minecraft', set its home directory
# to /srv/minecraft, and place minecraft_server.jar into /srv/minecraft
#
# See minecraft_server.jar for flags
. /etc/rc.subr
name=minecraft
rcvar=minecraft_enable
load_rc_config ${name}
command=/usr/local/bin/screen
pidfile=/var/run/minecraft.pid
start_cmd="${name}_start"
stop_cmd="${name}_stop"
status_cmd="${name}_status"
: ${minecraft_enable="NO"}
: ${minecraft_session="minecraft-session"}
: ${minecraft_user="minecraft"}
: ${minecraft_chdir="/srv/minecraft"}
: ${minecraft_path="/srv/minecraft/minecraft_server.jar"}
: ${minecraft_flags=""}
: ${minecraft_args="/usr/local/bin/java -Xmx1024M -Xms1024M \
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing \
-XX:ParallelGCThreads=4 -XX:+AggressiveOpts \
-jar ${minecraft_path} ${minecraft_flags} nogui"}
minecraft_start() {
unset "${rc_arg}_cmd"
minecraft_flags="-d -m -S ${minecraft_session} ${minecraft_args}"
if minecraft_running; then
echo "minecraft already running?"
else
run_rc_command "start"
fi
}
minecraft_stop() {
local cmd
cmd="${command} -p 0 -S ${minecraft_session} -X eval 'stuff stop\015'"
if minecraft_running; then
echo "Stopping minecraft."
su -m ${minecraft_user} -c "${cmd}"
fi
}
minecraft_status() {
if minecraft_running; then
echo "minecraft is running."
else
echo "minecraft is not running."
fi
}
minecraft_running() {
local check ses
ses="${minecraft_session}"
check=`su -m ${minecraft_user} -c "${command} -list" | grep ${ses}`
if [ "$check" ]; then
return 0
else
return 1
fi
}
run_rc_command "$1"