Я пытаюсь создать файл .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#
Вам нужно запустить его как
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
Некоторые другие примечания:
[[
вместо [
. 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