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

Тема в разделе "Linux", создана пользователем console1988, 5 июл 2014.

  1. console1988

    console1988

    Сообщения:
    84
    Симпатии:
    5
    Здравствуйте, приобрел физический сервер
    OC Linux Debian 6

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

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

    [​IMG]
    [​IMG]

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


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

    [​IMG]

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

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


    содержание файла 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 в линуксе на данный момент
     
  2. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.078
    Симпатии:
    304
    Это принципиально важно?

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

    console1988

    Сообщения:
    84
    Симпатии:
    5
    ну можно попробовать, самое главное, чтобы работало :)
    и чтобы я алгоритм понял :)
     
  4. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.078
    Симпатии:
    304
    console1988, по-сути, сервер автоматически не поднимается, так как он и не падал то, а завис. С точки зрения ОС - всё норм. Надо опрашивать состояние сервера отдельно, с определённым интервалом.

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

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

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

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

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    В данном случае ты не прав. Сервера автоматически перезапускаются, с уловием, что в строке запуска сервера не установлен ключ
    Код:
    norestart
     
  6. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.078
    Симпатии:
    304
    Vit_ amin, Оффтоп
     
  7. console1988

    console1988

    Сообщения:
    84
    Симпатии:
    5
    маленько разгуглился, как я понял нужно поставить на сервер screen который в случае если сервер повис убьёт процесс и заново его поднимет, вопрос только как его поставить, этого я пока не догоняю
     
  8. Yura7181

    Yura7181

    Сообщения:
    368
    Симпатии:
    293
  9. Vetaldx dx

    Vetaldx dx

    Сообщения:
    341
    Симпатии:
    27
    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.
     
  10. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.564
    Симпатии:
    1.149
    Vetaldx dx, а вдруг у него есть в скрипте команды?
     
  11. tiger_by

    tiger_by Гл. Админ SourceGames.RU

    Сообщения:
    629
    Симпатии:
    279
  12. ololosh

    ololosh

    Сообщения:
    128
    Симпатии:
    5
    Вот мой скрипт запуска додс сервера
    Код:
    #!/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