1. steelzzz Пользователь

    Регистрация:
    14.03.15
    Сообщения:
    65
    Симпатии:
    35
    Пол:
    Мужской
    Скрипт для запуска сервера CS 1.6 на VDS​
    Изменения (v 1.2)
    - Оптимизация всего скрипта
    * Улучшен алгоритм проверки серверов которые умерли (работает в 2 раза быстрее)
    * Подключение к консоли улучшено
    * Сделано нормальное отключение сервера (quit)
    + Добавлена проверка приоритета сервера и его востановление в случий если сервер крэшнулся и приоритет выставился по дефольту 0 (важно!)
    + Написал простую инструкцию установки :)


    Как юзать ?:
    ИМЯ_СКРИПТА start - запуск сервера
    ИМЯ_СКРИПТА stop - остановка сервера
    ИМЯ_СКРИПТА restart - перезапуск сервера
    ИМЯ_СКРИПТА console - открыть консоли сервера
    ИМЯ_СКРИПТА status - проверка статуса сервака с выводом статы в консоли
    ИМЯ_СКРИПТА checker - команда полезная для выполнения через крон ,выполняет проверку сервера на предмет онлайна ,если серв будет в оффе или не отвечать скрипт его перезапустит :) также возврашает старый приоритет)

    Что нужно чтобы скрипт работал ?
    screen
    taskset
    renice
    ну и сам сервер [​IMG]

    Автор: Puma aka 330863
     

    Вложения:

    maFFyoZZyk нравится это.
  2. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    Hlds_run поди не подойдет на 6153?
     
  3. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    а причем тут билд?:taunt:
     
  4. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    На сколько я помню различаются файлы запуска
     
  5. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    с каких это пор?о_О
    Windows = hlds.exe
    linux = hlds_run
    на любых билдах, насчет REhlds не знаю.
     
  6. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    sQula, содержимое hlds_run другое !!!
     
  7. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    да ладно?)
    интересно.. а подробней расскажи:D:lolsign:
     
    maFFyoZZyk нравится это.
  8. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    С с поста файл, строка 19
    PHP:
        HL=./hlds_i486

    С 6153, строка 19
    PHP:
        HL=./hlds_linux


    Уже достаточно чтобы 6153 c данным hlds_run не завелся
    Кстати rehlds использует от 6153 (тоже не заведется)
     
  9. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.169
    Пол:
    Мужской
    Punisher, только этим и отличается функционально
     
  10. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    а причем тут билд???
    я спросил, причем тут билд????
    --- добавлено 06.03.16 ---
    ты сравниваешь оригинал с .....
    причем тут билд.
     
    maFFyoZZyk нравится это.
  11. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    Вот кому надо hlds_run от 6153 (по команде quit будет выключать сервер, а не перезапускать)
    Понадобится для правильной работы скрипта
    PHP:
    #!/bin/sh
    #
    #       Copyright (c) 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 -"$FORCEthen
            
    # 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 -"$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=;;
            
    "-ignoresigint")
                
    SIGINT_ACTION="" ;;
            
    "-notrap")
                
    NO_TRAP=;;
            
    "-beta")
                
    BETA_VERSION="$2"
                
    shift ;;
            
    "-help")
                
    # quit with syntax
                
    quit 2
                
    ;;
            
    esac
            shift
        done

        
    # Ensure we have a game specified
        
    if test -"$GAME"then
            
    echo "Unable to determine game type from command line."
            
    quit 1
        elif test 
    ! -"$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 ! -"$HL"then
            
    echo "Half-life binary '$HL' not found, exiting"
            
    quit 1
        elif test 
    ! -"$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 1then
            
    #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 -"$GDB_TEST"then
                
    echo "Please install gdb first."
                
    echo "goto http://www.gnu.org/software/gdb/ "
                
    DEBUG=# turn off debugging cause gdb isn't installed
            
    fi
        fi

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

        
    if test -"$PID_IN_PARAMS&& test -"$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 0then
            
    if test -"$DEBUGthen
                
    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 -"$HL.core" then
                    CORE
    ="$HL.core"
                
    fi
               
                
    if test -"$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 -"$AUTO_UPDATE"then
            
    if test -"$STEAM"then
                
    echo "Updating server using Steam."
                
    CMD="$STEAM +logon anonymous +force_install_dir .. +app_update 90 +quit";
                if  
    test -"$BETA_VERSION"then
                  CMD
    ="$CMD -beta $BETA_VERSION";
                
    fi
               
                STEAMEXE
    =steamcmd $CMD
                
    if test $? -ne 0then
                    
    if test -"$STEAMERR"then
                        
    echo "`date`: Steam Update failed, exiting."
                        
    quit 1
                    
    else
                        echo 
    "`date`: Steam Update failed, ignoring."
                        
    return 0
                    fi
                fi
            
    else
                if 
    test -"$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 -"$RESTARTthen
            
    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 0then
                    
    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 0then
                
    # 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 -"$exitcode"then
            exitcode
    =1
        fi

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

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

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

    # Initialise
    init $*

    # Run
    run

    # Quit normally
    quit 0
     
  12. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.248
    Симпатии:
    548
    Пол:
    Мужской
    Да он в каждой теме умничает, просто забей)))
    Да и в чате было тоже самое...
    Вангую его ответ "Я бы сказал, но боюсь срач будет"
     
  13. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    выше и написал что файлы разные для запуска
     
  14. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    ты справниваешь ориг
    УМРИ!!!!!! в 6153 ребут серва по quit!
     

    Вложения:

  15. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    вот не должен быть ребут по quit
     
  16. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    у всех ребут, ты мего скриптер.
    на 6153.
    и на 6153 beta тоже.
     
  17. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    на, читай [init.d] Скрипт запуска HLDS

    Для перезапуска можно использовать exit
     
  18. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    да мне на этот скрипт .
    ты чего такой деревянный то?
    ты сравниваешь оригинал скрипт с .... скриптом.
    обсуждение было про оригиналы.
    --- добавлено 06.03.16 ---
    кто тебе vds сдал в аренду..
    бедная тп..
     
    maFFyoZZyk нравится это.
  19. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    Они оба оригиналы, ЛОЛ. Но от разных билдов
     
  20. sQula Пользователь

    Регистрация:
    24.12.15
    Сообщения:
    206
    Симпатии:
    25
    Пол:
    Мужской
    VKcom:
    msc_project
    Skype:
    cs-msc.ru
    Убейте меня...
    научись цитировать и ориентироваться в BB code.
    как там оригинал, раз даже кол-во строк не совпадает?