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

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

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

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

логи краш идет каждую секунду

Статус пользователя rus26
сообщение 8.12.2014, 11:39
Сообщение #1


Стаж: 12 лет

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

Обновился до билда 6153 , дропото 3.91 поставил amxmod 1.8.2 поставил и metamod v 1.21p37.
Скрипт запуска у меня такой
Скрытый текст
Код
#!/bin/bash
# authors: Puma http://c-s.net.ua
# version: 1.2
#. /lib/lsb/init-functions

#####################################################
# Configuration
#####################################################

server_name="названия тут моего сервера"  #Название сервера
screen_name="gg"  #Название screen-сессии
use_user="root"  #Имя юзера от которого запускается сервер
path="/root/jail222/hl"  #Путь до ROOT-директории сервера (без /в конце)
hlds_ip="ip мой тут вписан"  #IP сервера ,не ставить 0.0.0.0
hlds_port="27015"  #Порт сервера
hlds_players="32"  #Максимальное количество игроков на сервере
hlds_map="de_dust2"  #Имя первоначальной карты при запуске
hlds_options="-debug -pingboost 2 -sys_ticrate 500 -secure"  #Дополнительные параметры запуска
priority="0"  #Приоритет для сервера (-20 - Высокий;20 - Низкий)
usecore="1, 2"  #Привязка к ядрам (0, 1, 2, 3)
hlds_pid="${screen_name}.pid"  #Имя pid файла сервера
clear_logs="0"  # очишать лог файлы при запуске сервера через скрипт?
clear_cache="0"  # очишать кэши системы перед запуском сервера? # работает только под рутом

checker_cmd="/bin/qstat" #Команда пакета qStat отвечающего за проверку сервера

#####################################################
# End of configuration
#####################################################

if [ ! -x $path/hlds_run ]; then
    printf "${title}${txtred} Set permissions 777 for hlds_run\n"
    chmod -R 777 $path
fi

if [ $use_user == "root" ]; then
    start1=""
else
    start1="sudo -u ${use_user}"
fi

txtwht='\e[0;37m' # White
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtred='\e[0;31m' # Red
title="${txtwht}[${txtgrn}${hlds_ip}:${hlds_port}${txtwht}]"

# check screen pid: ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'
# check hlds pid: ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'

start() {
    if [ "`ps -ef | grep SCREEN | grep $screen_name | grep $hlds_ip | grep $hlds_port | grep -v grep | wc -l`" -gt 0 ]; then
        if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep $hlds_ip | grep $hlds_port | grep -v grep | wc -l`" -gt 0 ]; then
            printf "${title} Server ${server_name} already started\n"
            exit 1
        fi
    fi
    cd ${path}
    if [ ${clear_logs} == 1 ]; then
        ${start1} rm -f ${path}/debug.log
        ${start1} rm -f ${path}/cstrike/qconsole.log
        ${start1} rm -fr ${path}/cstrike/logs/*.log
        ${start1} rm -fr ${path}/cstrike/addons/amxmodx/logs/*.log
        printf "${title} Server logs cleared\n"
    fi
    if [ ${clear_cache} == 1 ] && [ ${use_user} == "root" ]; then
        echo 3 > /proc/sys/vm/drop_caches
        printf "${title} Cache && buffers cleared\n"
    fi
    printf "${title} Starting ${server_name}\n"
    /usr/bin/screen -AmdS ${screen_name} ${start1} ./hlds_run -game cstrike +ip ${hlds_ip} +port ${hlds_port} +map ${hlds_map} +maxplayers ${hlds_players} ${hlds_options} -pidfile ${hlds_pid}
    sleep 3
    ${start1} taskset -pc ${usecore} `cat ${path}/${hlds_pid}` > /dev/null
    ${start1} renice -n ${priority} -p `cat ${path}/${hlds_pid}` > /dev/null
    if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
        printf "${title} Server successfully started! :)\n"
    else
        printf "${title}${txtred} Server crashed on start :(\n"
    fi
}

kill_process() {
    if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ]; then
        printf "${title} Kill: `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep`\n"
        ${start1} kill -9 "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`"
        ${start1} rm -f ${path}/${hlds_pid}
    else
        printf "${title}${txtylw} Cannot kill hlds process of ${server_name} server\n"
    fi
}

stop() {
    if [ "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}' | wc -l`" -eq 1 ]; then
        /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name} -p 0 -X eval "stuff "quit""
        /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name} -p 0 -X eval "stuff "$(printf \\r)""
        sleep 1
        ${start1} rm -rf ${path}/${hlds_pid}
        
        if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ]; then
            printf "${title}${txtred} Server not stopped!\n"
        else
            printf "${title} Server has been stopped\n"
        fi
    else
        printf "${title}${txtylw} Cannot stop server ${server_name}, screen session not found!\n"
    fi
}

status() {
    printf "${title} Get status of server ${server_name}\n"
    ${start1} ${checker_cmd} -retry 3 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep ${hlds_ip}
    exit 1
}

console() {
    if [ "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ] && [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat ${path}/${hlds_pid}`" ]; then
        printf "${title} Connecting to ${server_name} server console\n"
        printf "${title}${txtylw} For exit from console press Ctrl+A,D\n"
        printf "${title}${txtylw} Don't press Ctrl+C\n"
        sleep 1
        /usr/bin/screen -wipe > /dev/null
        /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name}
    else
        printf "${title}${txtred} Cannot connect to ${server_name} server console, server not started!\n"
    fi
}

checker() {
    time=`date +%X`
    date=`date +%D`
    
    if [ -f ${checker_cmd} ]; then
        if [ ! -x ${checker_cmd} ]; then
            printf "${title}${txtred} Check run privileges of ${checker_cmd}\n"
            exit 1
        fi
    else
        printf "${title}${txtred} Check qstat/quakestat binar\n"
    fi
    
    checknoresp=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep response`
    if [ -n "${checknoresp}" ]; then
        printf "${title} ${server_name} server is: ${txtred}[NO RESPONSE]\n"
        printf "[${time} - ${date}] *[NO RESPONSE]* ${checknoresp}\n" >> $path/checker.log
        kill_process
        sleep 1
        start
        sleep 1
        printf "StartUP ${title}:" >> ${path}/checker.log
        if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
            printf " *[OK]* \n" >> ${path}/checker.log
        else
            printf " *[FAILED]* \n" >> ${path}/checker.log
        fi
        exit 1
    fi
    
    checkdown=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep DOWN`
    if [ -n "${checkdown}" ]; then
        printf "${title} ${server_name} server is: ${txtred}[DOWN]\n"
        printf "[{$time} - ${date}] *[DOWN]* ${checkdown}\n" >> ${path}/checker.log
        start
        sleep 1
        printf "StartUP ${title}:" >> ${path}/checker.log
        if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
            printf " *[OK]* \n" >> ${path}/checker.log
        else
            printf " *[FAILED]* \n" >> ${path}/checker.log
        fi
        exit 1
    fi
    
    checkup=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep cstrike`
    if [ -n "${checkup}" ]; then
        printf "${title} ${server_name} server is: ${txtgrn}[OK]\n"
        printf "[${time} - ${date}] *[OK]* ${checkup}\n" >> ${path}/checker.log
    fi
    if [ "`ps -e -o pid,cpuid,nice,cmd | grep hlds_ | grep -v SCREEN | grep -v grep | grep -v sh | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | awk '{print $3}'`" != ${priority} ]; then
        if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
            printf "${title}${txtylw} ${server_name} server priority is changed because server is crashed\n"
            ${start1} taskset -pc ${usecore} "`cat ${path}/${hlds_pid}`" > /dev/null
            ${start1} renice -n ${priority} -p "`cat ${path}/${hlds_pid}`" > /dev/null
        else
            printf "${title}${txtylw} ${server_name} server priority cant be restore because not found pidfile!\n"
        fi
    else
        printf "${title} ${server_name} server priority is good!\n"
    fi
}

case "$1" in
    start)
        start
;;
    stop)
        stop
;;
    restart)
        stop
        kill_process
        sleep 2
        start
;;
    status)
        status
;;
    console)
        console
;;
    checker)
        checker
;;
    *)
    printf "${title} How to use: ${txtgrn}$0 {start|stop|restart|status|console|checker}${txtwht}\n"
    exit 1
esac

Когда сервер запускаю через этот данный скрипт пишет это в putty при вкл
Скрытый текст
Код
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]

Options:
-a, --all-tasks         operate on all the tasks (threads) for a given pid
-p, --pid               operate on existing given pid
-c, --cpu-list          display and specify cpus in list format
-h, --help              display this help
-V, --version           output version information

The default behavior is to run a new command:
    taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
    taskset -p 700
Or set it:
    taskset -p 03 700
List format uses a comma-separated list instead of a mask:
    taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
    e.g. 0-31:2 is equivalent to mask 0x55555555

For more information see taskset(1).

а раньше такого косяка не было до обновления когда я запускал через этот же скрипт сервер писалось так обычно все время
Код
Starting тут названия сервера моего

и все.
В логах серверной части идут каждые секунды лог ошибок в debug.txt
Скрытый текст
Код
CRASH: Mon Dec  8 11:21:55 MSK 2014
Start Line: ./hlds_linux -game cstrike +ip ipmy +port 27015 +map de_dust2 +maxplayers 32 -debug -pingboost 2 -sys_ticrate 500 -secure -pidfile gg.pid
End of crash report

Помогите в чем проблема может быть из за чего эти ошибки идут краша?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя georgeml
сообщение 8.12.2014, 13:20
Сообщение #2
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(rus26 @ 8.12.2014, 11:35) *
Обновился до билда 6153 , дропото 3.91 поставил amxmod 1.8.2 поставил и metamod v 1.21p37.
В логах серверной части идут каждые секунды лог ошибок в debug.txt
Скрытый текст
Код
CRASH: Mon Dec  8 11:21:55 MSK 2014
Start Line: ./hlds_linux -game cstrike +ip ipmy +port 27015 +map de_dust2 +maxplayers 32 -debug -pingboost 2 -sys_ticrate 500 -secure -pidfile gg.pid
End of crash report

Помогите в чем проблема может быть из за чего эти ошибки идут краша?

Наверное, глупо спрашивать, присутствует ли map de_dust2 и pidfile gg.pid, но интересно- ./hlds_linux. Почему не hlds_run? Вроде как, в скрипте ясно написано.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evil
сообщение 8.12.2014, 13:24
Сообщение #3


Стаж: 14 лет

Сообщений: 1503
Благодарностей: 495
Полезность: 614

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

hlds_linux исполняемый, а ран это запуск.

в старых был hlds 686
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя rus26
сообщение 8.12.2014, 13:26
Сообщение #4


Стаж: 12 лет

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

Цитата(georgeml @ 8.12.2014, 13:16) *
Наверное, глупо спрашивать, присутствует ли map de_dust2 и pidfile gg.pid, но интересно- ./hlds_linux. Почему не hlds_run? Вроде как, в скрипте ясно написано.

карта de_dust2 да есть в папке maps, пайдфайл сам создается когда сервер включается. А на счет /hlds_linux даже незнаю почему-то это запускает именно. Что делать тогда?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 8.12.2014, 13:27
Сообщение #5


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

Стаж: 12 лет

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

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

у меня запускается через hlds_run. попробуй!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя evil
сообщение 8.12.2014, 13:28
Сообщение #6


Стаж: 14 лет

Сообщений: 1503
Благодарностей: 495
Полезность: 614

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

да все верно! должен быть linux

в скрипте запуска естественно run.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя rus26
сообщение 8.12.2014, 13:31
Сообщение #7


Стаж: 12 лет

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

Цитата(adva @ 8.12.2014, 13:23) *
у меня запускается через hlds_run. попробуй!

да мне желательно через этот скрипт чтобы запускалось нормально, раньше все ок запускалось до обновления билда сейчас это пишетsad.gif
Может из за этой траблы
Скрытый текст
Код
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]

Options:
-a, --all-tasks         operate on all the tasks (threads) for a given pid
-p, --pid               operate on existing given pid
-c, --cpu-list          display and specify cpus in list format
-h, --help              display this help
-V, --version           output version information

The default behavior is to run a new command:
    taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
    taskset -p 700
Or set it:
    taskset -p 03 700
List format uses a comma-separated list instead of a mask:
    taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
    e.g. 0-31:2 is equivalent to mask 0x55555555

For more information see taskset(1).

когда сервер запускаю через скрипт это пишет тоже в putty у меня. Раньше такой текст не показывал.

Отредактировал: rus26, - 8.12.2014, 13:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 8.12.2014, 13:44
Сообщение #8
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(Ev1l @ 8.12.2014, 12:24) *
да все верно! должен быть linux
в скрипте запуска естественно run.

crazy.gif туплю после работы) Это же логи (а не команда запуска)...

rus26, Права на hlds_run есть? Или 644 (после обновления)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя rus26
сообщение 8.12.2014, 13:47
Сообщение #9


Стаж: 12 лет

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

Цитата(georgeml @ 8.12.2014, 13:40) *
crazy.gif туплю после работы) Это же логи (а не команда запуска)...

rus26, Права на hlds_run есть? Или 644 (после обновления)

права 777 стоят и так же на скрипт поставил 777 права для запуска самого этого скрипта
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vitalijkee
сообщение 9.12.2014, 12:02
Сообщение #10


Стаж: 11 лет

Сообщений: 92
Благодарностей: 17
Полезность: 143

Цитата(rus26 @ 8.12.2014, 14:43) *
права 777 стоят и так же на скрипт поставил 777 права для запуска самого этого скрипта
Я использую вот такой скрипт

Скрипт
#/usr/bin/bash
TITLE='server'
LONGNAME='Counter-Strike 1.6'
NAME='server'
DAEMON='hlds_run'
UPDATER='/usr/hlds'
STEAM='/servers/srv' # Доманяя директория сервера.
USER='root' # Пользователь под которым будет запускатся сервер

# Game options
IP='127.0.0.1' # IP Сервера
PORT='27015' # Порт сервера
MAP='de_dust2_2x2' # Стартовая карта
GAME='cstrike' # Мод (cstrike)
SIZE='32' # Кол. игроков
HIGHPRIORITY=1 #Приоритет, поставьте -20 для высокого приоритета ,в таком случае, сервер нужно запускать от root. 1 станрадтный приоритет.
VAC='-secure'
TICRATE='-sys_ticrate 1200'
PINGBOOST='-pingboost 3'

# Ниже ничего не менять!
OPTS="-game $GAME $VAC +port $PORT +maxplayers $SIZE +sv_lan 0 +map $MAP $TICRATE $PINGBOOST +ip $IP -pidfile $STEAM/$GAME/$NAME.pid"
# Screen
CURRENT_USER=$(/usr/bin/whoami)
if [ "$CURRENT_USER" = "$USER" ]; then
INTERFACE="/usr/bin/screen -A -m -d -S $NAME"
else
INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $NAME"
fi


service_start() {
# Проверка pid файла
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
# Если pid существует, проверяем запущен ли сервер.

if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Процесс запущен.
echo -e "<span style=\"color:#0000FF\"><b>Невозможно запустить <b>$TITLE</b>. Сервер уже запущен.</b></span>"
#exit 1
else
# Если процесс остановлен, удаляем pid.
if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Screen еще жив.
# Получение ID процесса с pid-файла
kill -9 `cat $STEAM/$GAME/$NAME-screen.pid`
echo "Killing process ID $id"
echo "Удаление <b>$TITLE</b> screen pid file"
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
fi
if [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
rm -rf $STEAM/$GAME/$NAME-screen.pid
fi

# Удаление pid-файла сервера
echo "Удаление $TITLE pid файла"
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe всех старых скринов.
screen -wipe 1> /dev/null 2> /dev/null
service_start
fi
else
# Сервер не запущен, стартуем.
if [ -x $STEAM/$DAEMON ]; then
echo Запуск $TITLE - $LONGNAME
echo Сервер IP: $IP
echo Сервер port: $PORT
echo макс. игроков: $SIZE players
cd $STEAM
$INTERFACE $STEAM/$DAEMON $OPTS
sleep 1
ps -ef | grep SCREEN | grep "$NAME" | grep -v grep | awk '{ print $2}' > $STEAM/$GAME/$NAME-screen.pid
echo $TITLE screen process ID записан в $STEAM/$GAME/$NAME-screen.pid
echo $TITLE server process ID записан в $STEAM/$GAME/$NAME.pid

echo $TITLE Запущен.
chmod 666 $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
chown $USER $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
sleep 2
if [ $HIGHPRIORITY = 1 ]; then
renice -20 `cat $STEAM/$GAME/$NAME.pid` >/dev/null 2>&1
fi
fi
fi
}

service_stop() {
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
echo "<b>Остановка $TITLE - $LONGNAME</b>."
for id in `cat $STEAM/$GAME/$NAME-screen.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
done
# Remove server pid file
echo "Removing $TITLE pid file"
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe all old screen sessions
screen -wipe 1> /dev/null 2> /dev/null
echo "$TITLE stopped."
else
echo -e Немогу остановить $TITLE. Сервер не запущен.
#exit 1
fi
}

service_update() {
echo "Stopping and Clearing all Service files."
service_stop
sleep 2
service_clear
sleep 2
echo "Updating Steam Updater"
cd $UPDATER
./steam 1> /dev/null 2> /dev/null
echo "Updating Game Files"
./steam -command update -game $GAME -dir . 1> /dev/null 2> /dev/null
sleep 2
service_start
}


case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'restart')
service_stop
sleep 1
service_start
;;
'update')
service_update
;;
*)
echo "Usage $0 start|stop|restart"
esac

Установка: Закинуть в текстовый сохранить с названием start.
Поместить данный файл в корень сервера и дать ему права на запуск chmod +x start
Команды для запуска: ./start start "Запуск"
./start restart "перезапуск"
./start stop "остановка"
Если чтото не понятно или нужна помошь стучитесь по контактам!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Dimanok
сообщение 27.12.2014, 3:02
Сообщение #11
Стаж: 17 лет

Сообщений: 32
Благодарностей: 11
Полезность: 262

Цитата(Vitalijkee @ 9.12.2014, 14:32) *
Я использую вот такой скрипт

Скрипт
#/usr/bin/bash
TITLE='server'
LONGNAME='Counter-Strike 1.6'
NAME='server'
DAEMON='hlds_run'
UPDATER='/usr/hlds'
STEAM='/servers/srv' # Доманяя директория сервера.
USER='root' # Пользователь под которым будет запускатся сервер

# Game options
IP='127.0.0.1' # IP Сервера
PORT='27015' # Порт сервера
MAP='de_dust2_2x2' # Стартовая карта
GAME='cstrike' # Мод (cstrike)
SIZE='32' # Кол. игроков
HIGHPRIORITY=1 #Приоритет, поставьте -20 для высокого приоритета ,в таком случае, сервер нужно запускать от root. 1 станрадтный приоритет.
VAC='-secure'
TICRATE='-sys_ticrate 1200'
PINGBOOST='-pingboost 3'

# Ниже ничего не менять!
OPTS="-game $GAME $VAC +port $PORT +maxplayers $SIZE +sv_lan 0 +map $MAP $TICRATE $PINGBOOST +ip $IP -pidfile $STEAM/$GAME/$NAME.pid"
# Screen
CURRENT_USER=$(/usr/bin/whoami)
if [ "$CURRENT_USER" = "$USER" ]; then
INTERFACE="/usr/bin/screen -A -m -d -S $NAME"
else
INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $NAME"
fi


service_start() {
# Проверка pid файла
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
# Если pid существует, проверяем запущен ли сервер.

if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Процесс запущен.
echo -e "<span style=\"color:#0000FF\"><b>Невозможно запустить <b>$TITLE</b>. Сервер уже запущен.</b></span>"
#exit 1
else
# Если процесс остановлен, удаляем pid.
if [ "$(ps -p `cat $STEAM/$GAME/$NAME.pid` | wc -l)" -gt 1 ]; then
# Screen еще жив.
# Получение ID процесса с pid-файла
kill -9 `cat $STEAM/$GAME/$NAME-screen.pid`
echo "Killing process ID $id"
echo "Удаление <b>$TITLE</b> screen pid file"
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
fi
if [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
rm -rf $STEAM/$GAME/$NAME-screen.pid
fi

# Удаление pid-файла сервера
echo "Удаление $TITLE pid файла"
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe всех старых скринов.
screen -wipe 1> /dev/null 2> /dev/null
service_start
fi
else
# Сервер не запущен, стартуем.
if [ -x $STEAM/$DAEMON ]; then
echo Запуск $TITLE - $LONGNAME
echo Сервер IP: $IP
echo Сервер port: $PORT
echo макс. игроков: $SIZE players
cd $STEAM
$INTERFACE $STEAM/$DAEMON $OPTS
sleep 1
ps -ef | grep SCREEN | grep "$NAME" | grep -v grep | awk '{ print $2}' > $STEAM/$GAME/$NAME-screen.pid
echo $TITLE screen process ID записан в $STEAM/$GAME/$NAME-screen.pid
echo $TITLE server process ID записан в $STEAM/$GAME/$NAME.pid

echo $TITLE Запущен.
chmod 666 $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
chown $USER $STEAM/$GAME/*.pid #1> /dev/null 2> /dev/null
sleep 2
if [ $HIGHPRIORITY = 1 ]; then
renice -20 `cat $STEAM/$GAME/$NAME.pid` >/dev/null 2>&1
fi
fi
fi
}

service_stop() {
if [ -f $STEAM/$GAME/$NAME.pid ] || [ -f $STEAM/$GAME/$NAME-screen.pid ]; then
echo "<b>Остановка $TITLE - $LONGNAME</b>."
for id in `cat $STEAM/$GAME/$NAME-screen.pid`
do kill -9 $id
echo "Killing process ID $id"
echo "Removing $TITLE screen pid file"
rm -rf $STEAM/$GAME/$NAME-screen.pid
break
done
# Remove server pid file
echo "Removing $TITLE pid file"
rm -rf $STEAM/$GAME/$NAME.pid
# Wipe all old screen sessions
screen -wipe 1> /dev/null 2> /dev/null
echo "$TITLE stopped."
else
echo -e Немогу остановить $TITLE. Сервер не запущен.
#exit 1
fi
}

service_update() {
echo "Stopping and Clearing all Service files."
service_stop
sleep 2
service_clear
sleep 2
echo "Updating Steam Updater"
cd $UPDATER
./steam 1> /dev/null 2> /dev/null
echo "Updating Game Files"
./steam -command update -game $GAME -dir . 1> /dev/null 2> /dev/null
sleep 2
service_start
}


case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'restart')
service_stop
sleep 1
service_start
;;
'update')
service_update
;;
*)
echo "Usage $0 start|stop|restart"
esac

Установка: Закинуть в текстовый сохранить с названием start.
Поместить данный файл в корень сервера и дать ему права на запуск chmod +x start
Команды для запуска: ./start start "Запуск"
./start restart "перезапуск"
./start stop "остановка"
Если чтото не понятно или нужна помошь стучитесь по контактам!


Запускать под рутом не хорошо.

___
Для тех кто будет использовать этот скрипт:

Кидайте script_name в /etc/init.d/
Выставляйте права chmod +x /etc/init.d/script_name
Добавляйте в демоны chkconfig --add script_name


И теперь для удобства можно использовать
service script_name start
service script_name restart
service script_name stop

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vitalijkee
сообщение 27.12.2014, 3:49
Сообщение #12


Стаж: 11 лет

Сообщений: 92
Благодарностей: 17
Полезность: 143

Цитата(Dimanok @ 27.12.2014, 5:02) *
Запускать под рутом не хорошо.

___
Для тех кто будет использовать этот скрипт:

Кидайте script_name в /etc/init.d/
Выставляйте права chmod +x /etc/init.d/script_name
Добавляйте в демоны chkconfig --add script_name


И теперь для удобства можно использовать
service script_name start
service script_name restart
service script_name stop


Я тестовый сервер запускаю под рутом плагины потестить и тд!а основной сервер запускается под пользователем!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dimanok
сообщение 27.12.2014, 9:33
Сообщение #13
Стаж: 17 лет

Сообщений: 32
Благодарностей: 11
Полезность: 262

Это все понятно но люди могут проглядеть этот момент и запустить под рутом.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Vitalijkee
сообщение 31.1.2015, 5:28
Сообщение #14


Стаж: 11 лет

Сообщений: 92
Благодарностей: 17
Полезность: 143

Цитата(Dimanok @ 27.12.2014, 11:33) *
Это все понятно но люди могут проглядеть этот момент и запустить под рутом.

+ за внемательность)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: