.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
задан 24 January 2014 в 12:45

2 ответа

Все Вы логика в if [ "$1" = start ] блок, поэтому если Вы не даете тот аргумент на командной строке, Ваш сценарий, ничего не делает.

Необходимо проверить аргументы сначала:

if [ $# -ne 1 ] || [ "$1" != "start" ]; then
    echo "usage: $0 start"
    exit 1
else 
    # your stuff here
fi
5
ответ дан 24 January 2014 в 12:45

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

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
ответ дан 24 January 2014 в 12:45

Другие вопросы по тегам:

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