我是新来的,在其他地方找不到这个。我想编写一个快速的 bash 脚本,这样我就不必将以下代码复制/粘贴到我的 linux 服务器中了。
screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar
我希望能够输入一个简单的命令来运行上述命令,例如:Minecraft 或类似的东西。
答案1
这是我为我的 Minecraft 服务器编写的 shell 脚本。
将其保存为start.sh
并调用./start.sh start
您还可以调用备份,这会在服务器仍可运行时创建备份。此备份可在稍后恢复。
记住将其更改craftbukkit.jar
为您的 JAR 文件。
#!/bin/bash
# Made by bytecode77
##############################################################
DIRECTORY='/home/minecraft'
SESSIONNAME='minecraftserverscreen'
JARFILE='craftbukkit.jar'
WORLDNAME='world'
NETHERNAME='world_nether'
SKYNAME='world_skylands'
ENDNAME='world_the_end'
##############################################################
start()
{
SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
if [ $SCREENID ]; then
echo "Minecraft is already running."
else
echo "Starting Minecraft server..."
screen -dmS $SESSIONNAME java -Xms768M -Xmx768M -jar $JARFILE nogui
fi
}
stop()
{
SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
if [ $SCREENID ]; then
echo "Stopping Minecraft server..."
screen -S $SESSIONNAME -p 0 -X stuff "`printf "stop\r"`"
while screen -ls | grep $SESSIONNAME > /dev/null
do
sleep 0.1
done
else
echo "Minecraft is not running."
fi
}
restart()
{
echo "Restarting Minecraft server..."
stop > /dev/null && start > /dev/null
}
saveoff()
{
screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Starting backup..."\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-off"\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-all"\015'
sync
}
saveon()
{
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-on"\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Backup complete."\015'
}
backup()
{
echo "Creating backup of '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
saveoff
sleep 5
mkdir -p backups
tar cfv "backups/NEW.tar" $WORLDNAME $NETHERNAME $SKYNAME $ENDNAME > /dev/null
mv "backups/NEW.tar" "backups/$(date +"%m-%d-%Y_%H.%M.%S").tar"
saveon
}
restore()
{
echo "Restoring '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
stop > /dev/null
rm -r $WORLDNAME
rm -r $NETHERNAME
rm -r $SKYNAME
rm -r $ENDNAME
tar xfv "backups/$(ls backups -t | head -1 | grep ".tar")" > /dev/null
start > /dev/null
}
cd $DIRECTORY
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
backup)
backup
;;
restore)
restore
;;
*)
echo "Usage: ${0} {start|stop|restart|backup|restore}"
exit 2
esac
exit 0
答案2
第一的:
$ nano runMinecraft
输入以下内容:
#!/bin/bash
screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar`
保存并输入:
$ chmod +X runMinecraft
然后,要运行 Minecraft,只需输入:
$ ./runMinecraft
您还可以复制runMinecraft
到,/usr/bin/
这样就不必./
每次运行时都输入。
答案3
假设您有~/.profile
和~/.bash_aliases
文件,请添加一个别名~/.bash_aliases
(man alias
了解更多信息)
或者(也依赖于)使用正确的shebang( )~/.profile
添加一个可执行的bash脚本,它也应该运行。~/bin
#!/bin/bash
如果缺少文件,请从/etc/skel
cd /etc/skel
cp .profile .bash_aliases ~
echo 'alias minecraft="screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar"' | tee -a ~/.bash_aliases
重新登录就可以了