Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Авто запуск Сервера

, запуск сервера после падения
Статус пользователя GUS
сообщение 16.2.2016, 12:43
Сообщение #1
Стаж: 11 лет

Сообщений: 328
Благодарностей: 41
Полезность: < 0

Всем привет! Мужики нужна ваша помощь ,запустил Кс 1.6 сервер на Vps сервере,все нормально работает но есть одно но, не могу настроить hlds run чтоб после падения или отключения сервер, автоматический запускался. Огромное спасибо тем кто поможет мне с этим. Билд сервера
BUILD 6027 SERVER (0 CRC)

вот сам конфиг hlds
#!/bin/sh
#
# Copyright © 2002, Valve LLC. All rights reserved.
#
# a wrapper script for the main hl dedicated server binary.
# Performs auto-restarting of the server on crash. You can
# extend this to log crashes and more.
#

# setup the libraries, local dir first!
export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH"

init() {
# Initialises the various variables
# Set up the defaults
GAME="valve"
DEBUG=0
RESTART="yes"
HL=./hlds_linux
HL_DETECT=1
TIMEOUT=10 # time to wait after a crash (in seconds)
CRASH_DEBUG_MSG="email debug.log to linux@valvesoftware.com"
GDB="gdb" # the gdb binary to run
DEBUG_LOG="debug.log"
PID_FILE=""
STEAM=""
STEAMERR=""
SIGINT_ACTION="quit 0" # exit normally on sig int
NO_TRAP=0
AUTO_UPDATE=""
BETA_VERSION=""
PARAMS=$*

# Remove any old default pid files
# Cant do this as they may be still running
#rm -f hlds.*.pid

# use the $FORCE environment variable if its set
if test -n "$FORCE" ; then
# Note: command line -binary will override this
HL=$FORCE
HL_DETECT=0
fi

while test $# -gt 0; do
case "$1" in
"-game")
GAME="$2"
shift ;;
"-debug")
DEBUG=1
# Ensure that PID_FILE is set
if test -z "$PID_FILE"; then
PID_FILE="hlds.$$.pid"
fi ;;
"-norestart")
RESTART="" ;;
"-pidfile")
PID_FILE="$2"
shift ;;
"-binary")
HL="$2"
HL_DETECT=0
shift ;;
"-timeout")
TIMEOUT="$2"
shift ;;
"-gdb")
GDB="$2"
shift ;;
"-debuglog")
DEBUG_LOG="$2"
shift ;;
"-autoupdate")
AUTO_UPDATE="yes"
STEAM="steamcmd/steamcmd.sh"
RESTART="yes" ;;
"-steamerr")
STEAMERR=1 ;;
"-ignoresigint")
SIGINT_ACTION="" ;;
"-notrap")
NO_TRAP=1 ;;
"-beta")
BETA_VERSION="$2"
shift ;;
"-help")
# quit with syntax
quit 2
;;
esac
shift
done

# Ensure we have a game specified
if test -z "$GAME"; then
echo "Unable to determine game type from command line."
quit 1
elif test ! -d "$GAME"; then
echo "Invalid game type '$GAME' sepecified."
quit 1
fi

#if test 0 -eq "$NO_TRAP"; then
# Set up the int handler
# N.B. Dont use SIGINT symbolic value
# as its just INT under ksh
#trap "$SIGINT_ACTION" 2
#fi

if test ! -f "$HL"; then
echo "Half-life binary '$HL' not found, exiting"
quit 1
elif test ! -x "$HL"; then
# Could try chmod but dont know what we will be
# chmoding so just fail.
echo "Half-life binary '$HL' not executable, exiting"
quit 1
fi

# Setup debugging
if test "$DEBUG" -eq 1; then
#turn on core dumps :) (if possible)
echo "Enabling debug mode"
if test "`ulimit -c`" -eq 0 ; then
ulimit -c 2000
fi
GDB_TEST=`$GDB -v`
if test -z "$GDB_TEST"; then
echo "Please install gdb first."
echo "goto http://www.gnu.org/software/gdb/ "
DEBUG=0 # turn off debugging cause gdb isn't installed
fi
fi

PID_IN_PARAMS="`echo $PARAMS | grep -e -pidfile`"

if test -z "$PID_IN_PARAMS" && test -n "$PID_FILE"; then
HL_CMD="$HL $PARAMS -pidfile $PID_FILE"
else
HL_CMD="$HL $PARAMS"
fi
}

syntax () {
# Prints script syntax

echo "Syntax:"
echo "$0 [-game <game>] [-debug] [-norestart] [-pidfile]"
echo " [-binary [hlds_linux]"
echo " [-timeout <number>] [-gdb <gdb>] [-autoupdate]"
echo " [-steamerr] [-ignoresigint] [-beta <version>]"
echo " [-debuglog <logname>]"
echo "Params:"
echo "-game <game> Specifies the <game> to run."
echo "-debug Run debugging on failed servers if possible."
echo "-debuglog <logname> Log debug output to this file."
echo "-norestart Don't attempt to restart failed servers."
echo "-pidfile <pidfile> Use the specified <pidfile> to store the server pid."
echo "-binary <binary> Use the specified binary ( no auto detection )."
echo "-timeout <number> Sleep for <number> seconds before restarting"
echo " a failed server."
echo "-gdb <gdb> Use <dbg> as the debugger of failed servers."
echo "-steamerr Quit on steam update failure."
echo "-beta <version> Make use of a beta version of this server from Steam"
echo "-ignoresigint Ignore signal INT ( prevents CTRL+C quitting"
echo " the script )."
echo "-notrap Don't use trap. This prevents automatic"
echo " removal of old lock files."
echo ""
echo "Note: All parameters specified as passed through to the server"
echo "including any not listed."
}

debugcore () {
# Debugs any core file if DEBUG is set and
# the exitcode is none 0

exitcode=$1

if test $exitcode -ne 0; then
if test -n "$DEBUG" ; then
echo "bt" > debug.cmds;
echo "info locals" >> debug.cmds;
echo "info sharedlibrary" >> debug.cmds
echo "info frame" >> debug.cmds; # works, but gives an error... must be last
echo "----------------------------------------------" >> $DEBUG_LOG
echo "CRASH: `date`" >> $DEBUG_LOG
echo "Start Line: $HL_CMD" >> $DEBUG_LOG

# check to see if a core was dumped
if test -f core ; then
CORE="core"
elif test -f core.`cat $PID_FILE`; then
CORE=core.`cat $PID_FILE`
elif test -f "$HL.core" ; then
CORE="$HL.core"
fi

if test -n "$CORE"; then
$GDB $HL $CORE -x debug.cmds -batch >> $DEBUG_LOG
fi

echo "End of crash report" >> $DEBUG_LOG
echo "----------------------------------------------" >> $DEBUG_LOG
echo $CRASH_DEBUG_MSG
rm debug.cmds
else
echo "Add \"-debug\" to the $0 command line to generate a debug.log to help with solving this problem"
fi
fi
}


update() {
updatesingle
}

updatesingle() {
# Run the steam update
# exits on failure if STEAMERR is set

if test -n "$AUTO_UPDATE"; then
if test -f "$STEAM"; then
echo "Updating server using Steam."
CMD="$STEAM +logon anonymous +force_install_dir .. +app_update 90 +quit";
if test -n "$BETA_VERSION"; then
CMD="$CMD -beta $BETA_VERSION";
fi

STEAMEXE=steamcmd $CMD
if test $? -ne 0; then
if test -n "$STEAMERR"; then
echo "`date`: Steam Update failed, exiting."
quit 1
else
echo "`date`: Steam Update failed, ignoring."
return 0
fi
fi
else
if test -n "$STEAMERR"; then
echo "Could not locate steam binary:$STEAM, exiting.";
quit 1
else
echo "Could not locate steam binary:$STEAM, ignoring.";
return 0
fi
fi
fi

return 1
}

run() {
# Runs the steam update and server
# Loops if RESTART is set
# Debugs if server failure is detected
# Note: if RESTART is not set then
# 1. DEBUG is set then the server is NOT exec'd
# 2. DEBUG is not set the the server is exec'd

if test -n "$RESTART" ; then
echo "Auto-restarting the server on crash"

#loop forever
while true
do
# Update if needed
update

# Run the server
$HL_CMD
retval=$?
if test $retval -eq 0 && test -z "$RESTART" ; then
break; # if 0 is returned then just quit
fi

debugcore $retval

echo "`date`: Server restart in $TIMEOUT seconds"

# don't thrash the hard disk if the server dies, wait a little
sleep $TIMEOUT
done # while true
else
# Update if needed
update

# Run the server
if test "$DEBUG" -eq 0; then
# debug not requested we can exec
exec $HL_CMD
else
# debug requested we can't exec
$HL_CMD
debugcore $?
fi
fi
}

quit() {
# Exits with the give error code, 1
# if none specified.
# exit code 2 also prints syntax
exitcode="$1"

# default to failure
if test -z "$exitcode"; then
exitcode=1
fi

case "$exitcode" in
0)
echo "`date`: Server Quit" ;;
2)
syntax ;;
*)
echo "`date`: Server Failed" ;;
esac

# Remove pid file
if test -n "$PID_FILE" && test -f "$PID_FILE" ; then
# The specified pid file
rm -f $PID_FILE
fi

# reset SIGINT and then kill ourselves properly
trap - 2
kill -2 $$
}

# Initialise
init $*

# Run
run

# Quit normally
quit 0


Отредактировал: XyLiGaN, - 16.2.2016, 12:50
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя adva
сообщение 16.2.2016, 15:49
Сообщение #2


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

DEBUG=0 на 1 поменяй
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fire
сообщение 16.2.2016, 16:09
Сообщение #3


Иконка группы

Стаж: 17 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Цитата(adva @ 16.2.2016, 16:49) *
DEBUG=0 на 1 поменяй

А правильней, добавить -debug в строку запуска сервера.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя GUS
сообщение 16.2.2016, 22:12
Сообщение #4
Стаж: 11 лет

Сообщений: 328
Благодарностей: 41
Полезность: < 0

Спасибо мужики !
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GUS
сообщение 17.2.2016, 0:01
Сообщение #5
Стаж: 11 лет

Сообщений: 328
Благодарностей: 41
Полезность: < 0

Цитата(adva @ 16.2.2016, 19:49) *
DEBUG=0 на 1 поменяй

Причем тут Debug ? При crush сервере ,автоматический поднимался.

Отредактировал: GUS, - 17.2.2016, 0:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 17.2.2016, 0:12
Сообщение #6


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

GUS,
Используй в скрипте запуска кс опцию -debug
При краше сервер автоматически поднимается и отписывает в debug.log инфу о падении
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя GUS
сообщение 17.2.2016, 0:22
Сообщение #7
Стаж: 11 лет

Сообщений: 328
Благодарностей: 41
Полезность: < 0

Цитата(adva @ 17.2.2016, 4:12) *
GUS,
Используй в скрипте запуска кс опцию -debug
При краше сервер автоматически поднимается и отписывает в debug.log инфу о падении

Спасибо ,тему можно закрыть!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hunterzver
сообщение 17.2.2016, 2:05
Сообщение #8
Стаж: 11 лет

Сообщений: 121
Благодарностей: 29
Полезность: 51

а подскажите,а если вдс ребутнётся?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 17.2.2016, 3:25
Сообщение #9


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Цитата(hunterzver @ 17.2.2016, 3:05) *
а подскажите,а если вдс ребутнётся?


/etc/rc.local

туда добавляешь строчку перед exit 0
/usr/bin/sudo -u USER /home/USER/server.sh
вместо юзер вводи своё имя пользовтеля, дальше путь, где лежит скрипт запуска КС
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: