Настройка скрипта автоподнятия сервера что не так? Помогите

  • Автор темы console1988
  • Дата начала
C

console1988

Здравствуйте, приобрел физический сервер
OC Linux Debian 6

закачал сервер всё как полагается, поставил плагины и т.д.
готовый немного кривоватый продукт, сервер работает,

для запуска сервера, пока что 'вручную' использую команду
./start.sh start
либо из прямой строки весь путь ./......./start.sh start

JCkrTauYNOk.jpg

v01DrI8T2I0.jpg


В ручную крашил сервер, он сам поднимается


Но в некоторых случаях он крашится как-то по другому и зависает наглухо при этом наблюдается 100% нагрузка на ЦП

oHUuUngMhsY.jpg


приходится ручками убивать процессор и запускать по новой

собственно говоря


содержание файла start.sh отвечающего за запуск сервера
#!/bin/sh

D1=$(readlink -f "$0")
BINARYPATH="$(dirname "${D1}")"
cd "${BINARYPATH}"

# Server params
SERVER_NAME="CSS Pub#1 Server"
SERVER_PIDNAME="css_pub1"
SERVER_DAEMON='srcds_run'
SERVER_PARAMS="-game cstrike +ip 85.234.33.65 -port 27015 +tv_port 27016 -maxplayers 64 -noinsecure +map de_dust2"
# <<

if [ ! -e $SERVER_DAEMON ]; then
echo "Could not locate binary file, aborting"
exit 5
fi

case "$1" in
start)
if [ -e $SERVER_PIDNAME.pid ]; then
if ( kill -0 $(cat $SERVER_PIDNAME.pid) 2> /dev/null ); then
echo "The server is already running, try restart or stop"
exit 1
else
echo "${SERVER_PIDNAME}.pid found, but no server running. Possibly your previously started server crashed"
rm $SERVER_PIDNAME.pid
fi
fi
echo "Starting ${SERVER_NAME} server"
if [ -x "srcds_run" ]; then
"./${SERVER_DAEMON}" ${SERVER_PARAMS} > /dev/null &
echo $! > $SERVER_PIDNAME.pid
echo "server started"
else
echo "${SERVER_DAEMON} is not exectuable, cannot start server"
fi
;;
stop)
if [ -e $SERVER_PIDNAME.pid ]; then
echo "Stopping ${SERVER_NAME} server"
if ( kill -9 $(cat $SERVER_PIDNAME.pid) 2> /dev/null ); then
c=1
while [ "$c" -le 300 ]; do
if ( kill -9 $(cat $SERVER_PIDNAME.pid) 2> /dev/null ); then
echo -n "."
sleep 1
else
break
fi
c=$((++c))
done
fi
if ( kill -0 $(cat $SERVER_PIDNAME.pid) 2> /dev/null ); then
echo "Server is not shutting down cleanly - killing"
kill -KILL $(cat $SERVER_PIDNAME.pid)
else
echo -n "done"
fi
rm $SERVER_PIDNAME.pid
else
echo "No server running (${SERVER_PIDNAME}.pid is missing)"
exit 7
fi
;;
restart)
$0 stop && $0 start || exit 1
;;
status)
if [ -e $SERVER_PIDNAME.pid ]; then
if ( kill -0 $(cat $SERVER_PIDNAME.pid) 2> /dev/null ); then
echo "Server is running"
else
echo "Server seems to have died"
fi
else
echo "No server running (${SERVER_PIDNAME}.pid is missing)"
fi
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 2
esac
exit 0


что нужно сделать? чтобы он поднимался? хотя бы через 2-3 минуты, если не отвечает

создать какой то screen или еще что-то ...

Подскажите пожалуйста, можно ли обойтись кодом лишь в одном start.sh ?

если можно, выложите пожалуйста исправный вариант...


*** з.ы. Максимально доступным языком
потому что я практически 0 в линуксе на данный момент
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
Подскажите пожалуйста, можно ли обойтись кодом лишь в одном start.sh ?

Это принципиально важно?

Если нет, то я могу подкинуть вариант, с использованием ещё одного скрипта, который как раз предназначен для тех, кто в линухе не особо...
 
C

console1988

ну можно попробовать, самое главное, чтобы работало :)
и чтобы я алгоритм понял :)
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
console1988, по-сути, сервер автоматически не поднимается, так как он и не падал то, а завис. С точки зрения ОС - всё норм. Надо опрашивать состояние сервера отдельно, с определённым интервалом.

Вот скрипт от Даниэля: http://danielgibbs.co.uk/scripts/cssserver/.

Возможности - широчайшие :)
Позволяет установить сервак полностью в автоматическом режиме, рестартить, мониторить, дебажить и т.д.

Если ты хочешь использовать уже твой готовый сервер, не устанавливая новый, то сначала отредактируй шапку скрипта своими данными.

В целом, на его странице всё довольно таки неплохо описано. Будут вопросы - отвечу без проблем :)
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
console1988, по-сути, сервер автоматически не поднимается, так как он и не падал то, а завис
В данном случае ты не прав. Сервера автоматически перезапускаются, с уловием, что в строке запуска сервера не установлен ключ
C-подобный:
norestart
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
Vit_ amin, Оффтоп
 
C

console1988

маленько разгуглился, как я понял нужно поставить на сервер screen который в случае если сервер повис убьёт процесс и заново его поднимет, вопрос только как его поставить, этого я пока не догоняю
 

Vetaldx dx

Участник
Сообщения
341
Реакции
28
маленько разгуглился, как я понял нужно поставить на сервер screen который в случае если сервер повис убьёт процесс и заново его поднимет, вопрос только как его поставить, этого я пока не догоняю
apt-get install screen

В стартнеке сервера вписуешь так
Пример запуска css v34
HTML:
#!/bin/sh/
echo "Starting CS:Source Serer (Dust2 Only)"
sleep 1
taskset -c 1 screen -A -m -d -S dust ./srcds_run -console -localcser -nomaster -game cstrike -port 27016 +tv_port 27126 +fps_max 700 -tickrate 66 +maxplayers 32 +map de_dust2 +sv_lan 0
echo "Finish CS:Source Server (Dust2 Only)"

У меня просто нет слов, ты где такой взял стартник :taunt:
И запускать надо так ./start.sh
Без start.
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
Vetaldx dx, а вдруг у него есть в скрипте команды?
 

ololosh

Участник
Сообщения
134
Реакции
7
Вот мой скрипт запуска додс сервера
C-подобный:
#!/bin/sh
while true
do
screen -AmS myserver ./srcds_run -console -game dod +map dod_anzio +ip 192.168.0.104 +hostport 27015 +clientport 27005 +maxplayers 32 -exec server.cfg
sleep 1
done
С авторестартом при краше. Даже если хоткеем ctrl+c то сервер не остановится а перезагрузится. Можно просто открыть новый скрин ctrl+a+c
 
Сверху Снизу