.sh не работает и не получает ошибок

Я пытаюсь создать файл .sh, чтобы проверить, запущен ли сервер и не запускать ли его. я не получаю эхо от этого скрипта или любой сбой, но он не работает. Может кто-нибудь помочь мне исправить это или лучший способ исправить это. я не программист, я просто отредактировал несколько других скриптов, чтобы получить это.

JAVA="java -Xms512M -Xmx3072M -XX:PermSize=128m -jar FTBServer.jar nogui"
DIR="/home/jon/FTB/FTBnew"

if [ "$1" = start ] ; then
    if ps -ef | grep FTBServer.jar | grep -v -q grep ; then
        echo "Minecraft is already running"
    else
        echo "Starting!" && cd $DIR && screen -dmS minecraft $JAVA
        sleep 7
        if ps -ef | grep minecraft_server.jar | grep -v -q grep ; then
            echo "Minecraft server started successfully"
        else
            echo "Minecraft server failed to start"
        fi
    fi
fi

это то, что я получаю, и когда я запускаю его

root@FTB:/home/jon/FTB/FTBnew# bash Check.sh
root@FTB:/home/jon/FTB/FTBnew#
0
задан 06.05.2020, 19:34

1 ответ

Вам нужно запустить его как

bash Check.sh start

... потому что ничего не делается, если [ "$1" != start ].

Кроме того, эта строка

if ps -ef | grep minecraft_server.jar | grep -v -q grep ; then

должна быть

if ps -ef | grep FTBServer.jar | grep -v -q grep ; then

Некоторые другие примечания:

  • Использовать массивы для Bash аргументы.
  • Цитировать переменные, когда они используются.
  • Используйте [[ вместо [.
  • if коррекция линии, как показано выше.

Итак, более правильная версия будет:

JAVA=(java -Xms512M -Xmx3072M -XX:PermSize=128m -jar FTBServer.jar nogui)
DIR="/home/jon/FTB/FTBnew"

if [[ "$1" == start ]]; then
    if ps -ef | grep FTBServer.jar | grep -v -q grep; then
        echo "Minecraft is already running"
    else
        echo "Starting!"
        cd "$DIR" &&
        screen -dmS minecraft "${JAVA[@]}"
        sleep 7
        if ps -ef | grep FTBServer.jar | grep -v -q grep; then
            echo "Minecraft server started successfully"
        else
            echo "Minecraft server failed to start"
        fi
    fi
fi
0
ответ дан 06.05.2020, 19:34

Теги

Похожие вопросы