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

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

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

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

Упрощенная консоль.

, +прикрутка к ядру.
Статус пользователя mclaren
сообщение 2.2.2011, 3:37
Сообщение #1


Стаж: 17 лет

Сообщений: 307
Благодарностей: 25
Полезность: 86

Простой и понятный скрипт.
Присутствуют команды start | stop | restart | status | console

script v0.92

Код
#!/bin/bash

### BEGIN INIT INFO
# Provides:          hlds
# Required-Start:    $syslog $local_fs $network
# Required-Stop:     $syslog $local_fs $network
# Should-Start:      $remote_fs $named
# Should-Stop:       $remote_fs $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start HLDS Server
# Description:       HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.92
#
### END INIT INFO

# Source function library.
. /sbin/functions.sh

VERSION=0.92

#####################################################
# Конфигурирование
#####################################################

SERVER_NAME="Classic server" #Название сервера
screen_name=Server_classic #Название screen-сессии
path="/home/hldsserver"  #Путь до ROOT-директории сервера
hlds_ip=127.0.0.1  #IP сервера
hlds_port=27017  #Порт сервера
hlds_gametype=cstrike  #Тип игры
hlds_players=28  #Максимальное количество игроков на сервере
hlds_map=de_dust2  #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-pingboost 3 +exec server.cfg -secure -master +sv_lan 0"  #Дополнительные параметры запуска
use_user=root #Имя юзера от которого запускается сервер
condebug=1
check_version=0
checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера

#----------------------------------------------------
# Номер ядра/процессора в линуксе
# 2х-ядерные: 0 - первое ядро, 1 - второе ядро
# 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро
# По аналогии с другими многоядерными процессорами
use_core=1
#----------------------------------------------------

#################    ВНИМАНИЕ    ###################
#
# Строчки ниже, если не знаете, лучше не трогать!
#
#################    ВНИМАНИЕ    ###################
RETVAL=0

succes="[\033[1;32m ОК \033[0m]"
failed="[\033[1;31m FAIL \033[0m]"
status_on="[\033[1;32m Online \033[0m]"
status_off="[\033[1;31m Offline \033[0m]"
title="\033[1;34m [::]\033[0m"

if [ $condebug = 1 ]; then
    hlds_options2="-condebug"
fi

# Команда screen
INTR="taskset -c $use_core /usr/bin/screen -A -m -d -S $screen_name"

if [ ! -x $path/hlds_run ]; then
    printf "\033[22;31m Проверьте права на исполнение hlds_run \033[0m\n"
    exit 1
fi

prestart_check() {
    if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
        ch=`ps -ef | grep SCREEN | grep $screen_name`
        if [ -n "$ch" ]; then
            echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            printf "\033[1;34m Сервер $SERVER_NAME\033[0m \033[32m(!!) на данный момент УЖЕ работает (!!)\033[0m\n"
            echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            exit 1
        else
            cd $path
            rm -rf $path/$screen_pid
            rm -rf $path/$hlds_pid
        fi
    fi
}

start() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    # Проверка престартовая
    prestart_check
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cd $path
    $INTR ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_pid
    # Поиск и запись пидов процессов сервера и скринв системе
    ps -ef | grep SCREEN | grep "$screen_name" | grep -v grep | awk '{ print $2}' > $path/$screen_pid
    printf "$title\033[1;34m Запуск сервера $SERVER_NAME \033[0m\n"
    printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$hlds_port\033[0m\n"
    printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
    printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
    printf "\033[1;33m Статус ~> \033[0m"
    sleep 1
    if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
        ch=`ps -ef | grep SCREEN | grep $screen_name`
        if [ -n "$ch" ]; then
            printf "%53s$succes \n"
        else
            printf "%53s$failed \n"
        fi
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

stop() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
        # Извлекаем ID процесса из файла и увибаем процессы
        kill `cat $path/$hlds_pid`
        kill `cat $path/$screen_pid`
        sleep 1
        rm -rf $path/$screen_pid
        rm -rf $path/$hlds_pid

        printf "$title\033[1;31m Остановка $SERVER_NAME \033[0m"
        printf "%33s$succes \n"

    else
        printf "\033[1;34m Невозможно остановить $SERVER_NAME, сервер НЕ запущен \033[0m"
        printf "%5s$failed \n"
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

status() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    printf "$title\033[1;34m Статус сервера $SERVER_NAME \033[0m\n"
    printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$hlds_port\033[0m\n"
    printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
    printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
    printf "\033[1;33m Статус ~> \033[0m"
    sleep 1
    ch=`ps -ef | grep SCREEN | grep $screen_name`
    if [ -n "$ch" ]; then
        printf "%49s$status_on \n"
    else
        printf "%48s$status_off \n"
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

console() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
        printf "$title\033[1;34m Подключение к консоли $SERVER_NAME сервера \033[0m\n"
        echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        printf "\033[36m Для выхода из консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n"
        printf "\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n"
        printf "\033[36m Для выхода из режима листинга нажать \033[1;36mEsc \033[0m\n"
        printf "\033[1;31m Внимание!!! По неаккуратности можно положить сервер :D \033[0m\n"
        echo " Консоль включится через 5 секунд..."
        sleep 5
        /usr/bin/screen -R $screen_name
    else
        printf "\033[1;31m Невозможно подключиться к $SERVER_NAME, сервер не запущен \033[0m\n"
    fi
}

compile() {
    if [ $check_version = 1 ]; then
        check_version
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if [ -d $path/cstrike/addons/amxmodx ]; then
        printf "\033[32m Компиляция плагинов AmxModX \033[0m\n"
        echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        printf "\033[36m Компилируются исходные файлы (sma), находящиеся в директории {addons/amxmodx/scripting/*.sma} \033[0m\n"
        printf "\033[36m По завершению компиляции нажмите Q для выхода \033[0m\n"
        printf "\033[36m Компиляция начнется через 2 секунды. \033[0m\n"
        sleep 2
        cd $path/cstrike/addons/amxmodx/scripting
        ./compile.sh
        echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        printf "\033[32m Плагины скомпилированы \033[0m\n"
    else
        printf "\033[22;31m Проверьте установлен ли AmxModX (??) \033[0m\n"
    fi
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

check_version() {
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cd $path
    rm -f version.txt
    wget http://eqline.ru/project/hlds_init_script/version.txt 1> /dev/null 2>&1
    sleep 1
    for ver in `cat $path/version.txt`
    do
        if [ $VERSION \< $ver ]; then
            printf "\033[1;31m Доступна новая версия скрипта ( $ver )\033[0m\n"
            printf "\033[36m Подробнее на форуме eQline.ru: http://forum.eqline.ru \033[0m\n"
            printf "\033[1;36m Ссылка: http://forum.eqline.ru/topic/361-скрипт-запуска-hlds-серверов/ \033[0m\n"
        else
            printf "\033[1;36m Ваша версия является последней\033[0m \033[1;34m( Текущая версия: $VERSION ) \033[0m\n"
        fi
    break
    done
    echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rm -f version.txt
    sleep 1
}

checker() {
    checktag="[HLDS-CheckUP]"
    checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep DOWN`
    if [ -n "$checkdown" ]; then
        printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[31m*[DOWN]*\033[0m\n"
        # echo Отсылаем почту
        cd $path
        time=`date +%X`
        date=`date +%D`
        inlog=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep DOWN`
        printf "[$time - $date] *[DOWN]* $inlog\n" >> checker.log
        stop
        sleep 2
        start
        sleep 1
        echo ----------------ATTANTION---------------- >> checker.log
        printf "StartUP $SERVER_NAME:" >> checker.log
        ch=`ps -ef | grep SCREEN | grep $screen_name`
        if [ -n "$ch" ]; then
            printf " *[OK]* \n" >> checker.log
        else
            printf " *[FAILED]* \n" >> checker.log
        fi
        echo ----------------------------------------- >> checker.log
        exit 1
    fi
    checkup=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep cstrike`
    if [ -n "$checkup" ]; then
        printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[32m*[OK]*\033[0m\n"
        cd $path
        time=`date +%X`
        date=`date +%D`
        inlog=`quakestat -P -a2s $hlds_ip:$hlds_port | grep cstrike`
        printf "[$time - $date] *[OK]* $inlog\n" >> checker.log
        exit 1
    fi
}

case "$1" in
    start)
        start
;;
    stop)
        stop
;;
    restart)
        stop
        sleep 2
        start
;;
    status)
        status
;;
    console)
        console
;;
    compile)
        compile
;;
    checkUpdate)
        check_version
;;
    checker)
        checker
;;
    *)
    echo "Usage: $0 {start|stop|restart|status|console|compile|checkUpdate|checker}"
    exit 1
esac


script v0.94
#!/bin/bash

### BEGIN INIT INFO
# Provides: hlds
# Required-Start: $syslog $local_fs $network
# Required-Stop: $syslog $local_fs $network
# Should-Start: $remote_fs $named
# Should-Stop: $remote_fs $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start HLDS Server
# Description: HLDS Start Script
#
# author: LeXiKoN http://eqline.ru
# version: 0.94
#
### END INIT INFO

# Source function library.
. /lib/lsb/init-functions

VERSION=0.94

#####################################################
# Конфигурирование
#####################################################

SERVER_NAME="My Server" #Название сервера
screen_name=server #Название screen-сессии
path="/home/hlds/server/" #Путь до ROOT-директории сервера
hlds_ip=0.0.0.0 #IP сервера
hlds_port=27015 #Порт сервера
hlds_gametype=cstrike #Тип игры
hlds_players=20 #Максимальное количество игроков на сервере
hlds_map=de_inferno #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-pingboost 3 +exec server.cfg +log on" #Дополнительные параметры запуска
use_user=hlds #Имя юзера от которого запускается сервер
condebug=1
check_version=0
checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера

#----------------------------------------------------
# Номер ядра/процессора в линуксе
# 2х-ядерные: 0 - первое ядро, 1 - второе ядро
# 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро
# По аналогии с другими многоядерными процессорами
use_core=0
#----------------------------------------------------

################# ВНИМАНИЕ ###################
#
# Строчки ниже, если не знаете, лучше не трогать!
#
################# ВНИМАНИЕ ###################
RETVAL=0

succes="[\033[1;32m ОК \033[0m]"
failed="[\033[1;31m FAIL \033[0m]"
status_on="[\033[1;32m Online \033[0m]"
status_off="[\033[1;31m Offline \033[0m]"
title="\033[1;34m [::]\033[0m"

if [ $condebug -eq 1 ]; then
hlds_options2="-condebug"
fi

# Команда screen
INTR="taskset -c $use_core /usr/bin/screen -A -m -d -S $screen_name"

if [ ! -x $path/hlds_run ]; then
printf "\033[22;31m Проверьте права на исполнение hlds_run \033[0m\n"
exit 1
fi

prestart_check() {
if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
ch=`ps -ef | grep SCREEN | grep $screen_name`
if [ -n "$ch" ]; then
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printf "\033[1;34m Сервер $SERVER_NAME\033[0m \033[32m(!!) на данный момент УЖЕ работает (!!)\033[0m\n"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
exit 1
else
cd $path
rm -rf $path/$screen_pid
rm -rf $path/$hlds_pid
fi
fi
}

start() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
# Проверка престартовая
prestart_check
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $path
$INTR sudo -u $use_user ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port $hlds_options $hlds_options2 -pidfile $hlds_pid
# Поиск и запись пидов процессов сервера и скринв системе
ps -ef | grep SCREEN | grep "$screen_name" | grep -v grep | awk '{ print $2}' > $path/$screen_pid
printf "$title\033[1;34m Запуск сервера $SERVER_NAME \033[0m\n"
printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$hlds_port\033[0m\n"
printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
printf "\033[1;33m Статус ~> \033[0m"
sleep 1
if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
ch=`ps -ef | grep SCREEN | grep $screen_name`
if [ -n "$ch" ]; then
printf "%53s$succes \n"
else
printf "%53s$failed \n"
fi
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

stop() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
# Извлекаем ID процесса из файла и увибаем процессы
kill `cat $path/$hlds_pid`
kill `cat $path/$screen_pid`
sleep 1
rm -rf $path/$screen_pid
rm -rf $path/$hlds_pid

printf "$title\033[1;31m Остановка $SERVER_NAME \033[0m"
printf "%33s$succes \n"

else
printf "\033[1;34m Невозможно остановить $SERVER_NAME, сервер НЕ запущен \033[0m"
printf "%5s$failed \n"
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

status() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printf "$title\033[1;34m Статус сервера $SERVER_NAME \033[0m\n"
printf "\033[1;35m Порт севрера:\033[0m \033[1;36m$hlds_port\033[0m\n"
printf "\033[1;35m Привязка к ядру:\033[0m \033[1;36m$use_core\033[0m\n"
printf "\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
printf "\033[1;33m Статус ~> \033[0m"
sleep 1
ch=`ps -ef | grep SCREEN | grep $screen_name`
if [ -n "$ch" ]; then
printf "%49s$status_on \n"
else
printf "%48s$status_off \n"
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

console() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then
printf "$title\033[1;34m Подключение к консоли $SERVER_NAME сервера \033[0m\n"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printf "\033[36m Для выхода из консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n"
printf "\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n"
printf "\033[36m Для выхода из режима листинга нажать \033[1;36mEsc \033[0m\n"
printf "\033[1;31m Внимание!!! По неаккуратности можно положить сервер :D \033[0m\n"
echo " Консоль включится через 5 секунд..."
sleep 5
/usr/bin/screen -R $screen_name
else
printf "\033[1;31m Невозможно подключиться к $SERVER_NAME, сервер не запущен \033[0m\n"
fi
}

compile() {
if [ "$check_version" -eq 1 ]; then
check_version
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -d $path/cstrike/addons/amxmodx ]; then
printf "\033[32m Компиляция плагинов AmxModX \033[0m\n"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printf "\033[36m Компилируются исходные файлы (sma), находящиеся в директории {addons/amxmodx/scripting/*.sma} \033[0m\n"
printf "\033[36m По завершению компиляции нажмите Q для выхода \033[0m\n"
printf "\033[36m Компиляция начнется через 2 секунды. \033[0m\n"
sleep 2
cd $path/cstrike/addons/amxmodx/scripting
./compile.sh
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printf "\033[32m Плагины скомпилированы \033[0m\n"
else
printf "\033[22;31m Проверьте установлен ли AmxModX (??) \033[0m\n"
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

check_version() {
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $path
rm -f version.txt
wget http://eqline.ru/project/hlds_init_script/version.txt 1> /dev/null 2>&1
sleep 1
for ver in `cat $path/version.txt`
do
if [ $VERSION \< $ver ]; then
printf "\033[1;31m Доступна новая версия скрипта ( $ver )\033[0m\n"
printf "\033[36m Подробнее на форуме eQline.ru: http://forum.eqline.ru \033[0m\n"
printf "\033[1;36m Ссылка: http://forum.eqline.ru/topic/361-скрипт-за...-hlds-серверов/ \033[0m\n"
else
printf "\033[1;36m Ваша версия является последней\033[0m \033[1;34m( Текущая версия: $VERSION ) \033[0m\n"
fi
break
done
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rm -f version.txt
sleep 1
}

check_logsize() {
printf "\033[1;35m Проверка размера .log файлов \033[0m\n"
maxlogsize=10485760
if [ -f $path/checker.log ]; then
sizeCheckUP=`stat -c%s $path/checker.log`
printf "\033[1;36m Размер checker.log:\033[0m \033[1;34m $sizeCheckUP байт\033[0m\n"
if [ "$sizeCheckUP" -ge "$maxlogsize" ]; then
printf "\033[1;31m Очищаю файл checker.log\033[0m\n"
tail -n 50 $path/checker.log > $path/checker.temp
mv $path/checker.temp $path/checker.log
sleep 1
fi
else
printf "\033[1;31m Файл checker.log отсутствует\033[0m\n"
fi
if [ -f $path/cstrike/qconsole.log ]; then
sizeQconsole=`stat -c%s $path/cstrike/qconsole.log`
printf "\033[1;36m Размер qconsole.log:\033[0m \033[1;34m $sizeQconsole байт\033[0m\n"
if [ "$sizeQconsole" -ge "$maxlogsize" ]; then
printf "\033[1;31m Очищаю файл qconsole.log\033[0m\n"
tail -n 50 $path/cstrike/qconsole.log > $path/cstrike/qconsole.temp
mv $path/cstrike/qconsole.temp $path/cstrike/qconsole.log
sleep 1
fi
else
printf "\033[1;31m Файл qconsole.log отсутствует\033[0m\n"
fi
}

checker() {
checktag="[HLDS-CheckUP]"
checkresponse=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep response`
if [ -n "$checkresponse" ]; then
printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[31m*[No response]*\033[0m\n"
# echo Отсылаем почту
cd $path
time=`date +%X`
date=`date +%D`
inlog=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep response`
printf "[$time - $date] *[No response]* $inlog\n" >> checker.log
stop
sleep 2
start
sleep 1
echo ----------------ATTANTION---------------- >> checker.log
printf "StartUP $SERVER_NAME:" >> checker.log
ch=`ps -ef | grep SCREEN | grep $screen_name`
if [ -n "$ch" ]; then
printf " *[OK]* \n" >> checker.log
else
printf " *[FAILED]* \n" >> checker.log
fi
echo ----------------------------------------- >> checker.log
exit 1
fi
checkdown=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep DOWN`
if [ -n "$checkdown" ]; then
printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[31m*[DOWN]*\033[0m\n"
# echo Отсылаем почту
cd $path
time=`date +%X`
date=`date +%D`
inlog=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep DOWN`
printf "[$time - $date] *[DOWN]* $inlog\n" >> checker.log
stop
sleep 2
start
sleep 1
echo ----------------ATTANTION---------------- >> checker.log
printf "StartUP $SERVER_NAME:" >> checker.log
ch=`ps -ef | grep SCREEN | grep $screen_name`
if [ -n "$ch" ]; then
printf " *[OK]* \n" >> checker.log
else
printf " *[FAILED]* \n" >> checker.log
fi
echo ----------------------------------------- >> checker.log
exit 1
fi
checkup=`$checker_command -P -a2s $hlds_ip:$hlds_port | grep cstrike`
if [ -n "$checkup" ]; then
printf "\033[1;37m$checktag\033[0m $SERVER_NAME \033[32m*[OK]*\033[0m\n"
cd $path
time=`date +%X`
date=`date +%D`
inlog=`quakestat -P -a2s $hlds_ip:$hlds_port | grep cstrike`
printf "[$time - $date] *[OK]* $inlog\n" >> checker.log
exit 1
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
status
;;
console)
console
;;
compile)
compile
;;
update)
check_version
;;
checker)
checker
;;
logsize)
check_logsize
;;
*)
echo "Usage: $0 {start|stop|restart|status|console|compile|update|checker|logsize}"
exit 1
esac
exit 0


ps.В этой теме оригинал скрипта отличный от этой темы.-> https://c-s.net.ua/forum/topic27162.html

Отредактировал: mclaren, - 2.2.2011, 18:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
Статус пользователя sabas
сообщение 2.2.2011, 7:52
Сообщение #2
Стаж: 16 лет

Сообщений: 90
Благодарностей: 9
Полезность: 83

Скажите пжл , а как задать в скрипте высокий приоритет !?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 2.2.2011, 15:12
Сообщение #3


Стаж: 17 лет

Сообщений: 307
Благодарностей: 25
Полезность: 86

Вот эту строчку изменить
Цитата
$INTR ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port

на вот такую
Цитата
$INTR nice -15 ./hlds_run -game $hlds_gametype +maxplayers $hlds_players +map $hlds_map +ip $hlds_ip +port $hlds_port

nice -15 приоритет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя laursen
сообщение 2.2.2011, 15:36
Сообщение #4


Стаж: 15 лет

Сообщений: 515
Благодарностей: 316
Полезность: 863

Цитата
# version: 0.92

Вообще-то уже 0.94 версия давно есть.
ТС выспался... :biggrin:

Отредактировал: laursen, - 2.2.2011, 18:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 2.2.2011, 18:14
Сообщение #5


Стаж: 17 лет

Сообщений: 307
Благодарностей: 25
Полезность: 86

laursen,
Поправимс =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя нуб2
сообщение 6.1.2012, 18:36
Сообщение #6


Стаж: 12 лет

Сообщений: 2367
Благодарностей: 1209
Полезность: 1014

Лениво читать, чем отличается от скрипта Лексикона и Пумы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tarum
сообщение 2.4.2012, 1:51
Сообщение #7


Стаж: 16 лет

Сообщений: 88
Благодарностей: 15
Полезность: 285

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

Цитата(нуб2 @ 6.1.2012, 19:36) *
Лениво читать, чем отличается от скрипта Лексикона и Пумы?

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