проблема

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Ответить
Сообщение
Автор
irbis_triffle
Нович0к
Нович0к
Сообщения: 1
Зарегистрирован: 11.02.2010

#1 Сообщение 11.02.2010, 07:09

Здравствуйте!
Понравился Ваш скрипт, решил попробовать, но столкнулся с проблемой ручной "остановки -> запуска":

Код: Выделить всё

XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh status
hlds not running				                        # сервер не запущен
XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh start	# сервер запустился
XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh status	
hlds running as pid 4086			  
XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh stop	# сервер остановился
Successfuly stopped server		
XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh status
hlds not running				 
XxXxX@xXxXx:/usr/games/hlds_dm$ ./go3.sh start
Server already running! (pid=4084)		                # сервер НЕ запущен
XxXxX@xXxXx:/usr/games/hlds_dm$
Повторный запуск уже не возможен :suicide:
Буду очень признателен за помощь ))

P.S.Предполагаю Ваш интерес к скрипту запуска, поэтому сразу привожу:
Скрипт запуска
#!/bin/bash
./hlds_run -binary ./hlds_i686 -console -game cstrike -secure -pidfile hlds.pid -norestart -port 27015 +maxplayers 24 +map de_aztec

Аватара пользователя
jamaicada
Лейтенант
Лейтенант
Сообщения: 103
Зарегистрирован: 31.05.2009

#2 Сообщение 11.02.2010, 12:13

Вы бы не скрипт запуска а go3.sh показывали. Ошибка в нем.
Вот допустим как у меня. Для работы нужен screen и мозг, дабы поправить все под свои нужды.
init.d скрипт для linux
#!/bin/sh
# The user that will run the server
USER=user

# Leave this alone.
NAME=cstrike
PATH=/bin:/usr/bin:/sbin:/usr/sbin

# DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/usr/games

# Leave this alone.
DAEMON=hldsds_run

# IP of running server. To be used when status called only.
IPADRR="192.168.1.1"

# Internet-server:
PARAMS="-console -game tf +ip $IPADRR -port 27015 +maxplayers 32 +map pl_goldrush -pidfile $NAME.pid -pingboost 2 -debug"

# Leave this alone.
DESC="Cool server"

case "$1" in
start)
if [[ `su - -c "screen -ls |grep $NAME" $USER` ]]
then
echo "$NAME is already running!"
else
echo "Starting $DESC: $NAME"
su - -c "cd $DIR; screen -m -d -S $NAME ./$DAEMON $PARAMS" $USER
fi
;;

stop)
if [[ `su - -c "screen -ls |grep $NAME" $USER` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;

restart)
if [[ `su - -c "screen -ls |grep $NAME" $USER` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
su - -c "cd $DIR; screen -m -d -S $NAME ./$DAEMON $PARAMS" $USER
echo " ... done."
;;

*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

exit 0

Ответить