Я новичок здесь, и я не мог найти это где-нибудь еще. Я хотел написать быстрый скрипт bash, чтобы я мог перестать копировать / вставлять следующий код на мой Linux-сервер.

screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar

Я хочу быть в состоянии набрать простую команду, которая будет запускать вышеупомянутую команду, IE: Minecraft или что-то в этом роде.

3 ответа3

2

Это сценарий оболочки, который я написал для моего сервера Minecraft.

сохраните его как 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
1

Первый:

$ 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/ чтобы вам не приходилось вводить ./ каждый раз, когда вы его запускаете.

0

Предполагая, что у вас есть файлы ~/.profile и ~/.bash_aliases , добавьте псевдоним в ~/.bash_aliases (man alias для получения дополнительной информации)

В качестве альтернативы (также зависит от ~/.profile) добавьте исполняемый скрипт bash в ~/bin с правильным shebang (#!/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

перелог и это должно работать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .