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

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

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

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

3 страниц V   1 2 »

Скрипт запуска.

Статус пользователя mclaren
сообщение 10.8.2010, 0:47
Сообщение #1


Стаж: 19 лет

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

Доброй ночи Уважаемые! =)
После того как у меня полетел хард(битые сектора) я смог забрать от туда только сервера свои, а вот скрипты запуска не смог.
Я давно тут нашел скрипт очень полезный и очень мне понравившийся.
Функции его были стандартные start,stop. Забивался он в screnn, я мог спокойно зайти в screen -r там увдиеть названия своих серверов а дальше через скрин выполнять там команды на сервере и выходить стандартным способом, в общем говоря как всегда. Тут я видел скрипты на форуме они либо на daemon, либо если на скрин то у меня как и в прошлый раз не запускалось, а вот на том что я нашел тут когда т овсе работало, но теперь не могу найти.
Предложите какой нибудь подходящий скрипт запуска.
PS.Там для удобства можно еще было обозвать имя скрина, что бы в screen -r не путаться и видеть на каком скрине какой сервер висит.
Заранее благодарю за помощь!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Mzercer
сообщение 10.8.2010, 5:15
Сообщение #2
Стаж: 15 лет

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

Цитата(mclaren @ 10.8.2010, 2:47) *
Доброй ночи Уважаемые! =)
После того как у меня полетел хард(битые сектора) я смог забрать от туда только сервера свои, а вот скрипты запуска не смог.
Я давно тут нашел скрипт очень полезный и очень мне понравившийся.
Функции его были стандартные start,stop. Забивался он в screnn, я мог спокойно зайти в screen -r там увдиеть названия своих серверов а дальше через скрин выполнять там команды на сервере и выходить стандартным способом, в общем говоря как всегда. Тут я видел скрипты на форуме они либо на daemon, либо если на скрин то у меня как и в прошлый раз не запускалось, а вот на том что я нашел тут когда т овсе работало, но теперь не могу найти.
Предложите какой нибудь подходящий скрипт запуска.
PS.Там для удобства можно еще было обозвать имя скрина, что бы в screen -r не путаться и видеть на каком скрине какой сервер висит.
Заранее благодарю за помощь!

screen -A -m -d -S имя ./hlds_run -game cstrike *дальше свои настройки*

Поставь +, если помогло.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DaTeX
сообщение 10.8.2010, 8:57
Сообщение #3


Стаж: 16 лет

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

ты об этом имел ввиду https://c-s.net.ua/forum/topic2268.html
?


!
Аккаунт пользователя заблокирован до: 26.5.2284, 10:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 12.8.2010, 0:36
Сообщение #4


Стаж: 19 лет

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

Цитата(Mzercer @ 10.8.2010, 6:15) *
screen -A -m -d -S имя ./hlds_run -game cstrike *дальше свои настройки*

Поставь +, если помогло.

Это как бы хорошо, но очень хотелось бы скрипт с расширенными настройками, start,stop,restart и т.д.
Цитата
ты об этом имел ввиду https://c-s.net.ua/forum/topic2268.html
?

Это я пробовал давно, но там же на сервисах запускается,а я вот хочу найти где именно в скрине и такой же функциональный.Я точно помню что нашел скрипт который я ищу сейчас, на этом же форуме.....
У меня ОС Gentoo, там с сервисами проблема.


Да и к тому же, я пробывал запускать как вол всех скриптах командой
screen -A -m -d -S ./hlds_run и т.д.
или screen -AmdS ./hlds_run и т.д. и в обоих случаях не запускалось.
А если вот так screen ./hlds_run и т.д. то все нормально....

Отредактировал: mclaren, - 12.8.2010, 14:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mzercer
сообщение 13.8.2010, 1:29
Сообщение #5
Стаж: 15 лет

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

Вы не умеете работать с Linux. По-видимому у вас не установлен модуль screen.

Я могу вам предложить 3 вещи:
1. Нанять системного администратора, который решит ваши проблемы (~2000 р/месяц)
2. Заказать у меня хостинг, администрирование осуществлять вообще не придётся, постоянный онлайн и мною написанная защита входит в стоимость. ICQ: 376421296 , если есть вопросы.
3. Попробовать решить проблему самому.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 13.8.2010, 15:13
Сообщение #6


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(Mzercer @ 13.8.2010, 2:29) *
Вы не умеете работать с Linux. По-видимому у вас не установлен модуль screen.

2. Заказать у меня хостинг, администрирование осуществлять вообще не придётся, постоянный онлайн и мною написанная защита входит в стоимость. ICQ: 376421296 , если есть вопросы.

очередной троллинг....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя 330863
сообщение 14.8.2010, 17:53
Сообщение #7


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Mzercer,
реклама spam.gif

mclaren,
если тебе нужен просто чтоб при падений сервер перезапускалься то поправь hlds_run ,а скрипт запуска можно самому придумать ,тоесть сделать yy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mzercer
сообщение 16.8.2010, 12:53
Сообщение #8
Стаж: 15 лет

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

Цитата(shadowboss @ 13.8.2010, 17:13) *
очередной троллинг....

Цитата(330863 @ 14.8.2010, 19:53) *
Mzercer,
реклама spam.gif
mclaren,
если тебе нужен просто чтоб при падений сервер перезапускалься то поправь hlds_run ,а скрипт запуска можно самому придумать ,тоесть сделать yy.gif

Завидуем молча fuck.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 16.8.2010, 13:56
Сообщение #9


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(Mzercer @ 16.8.2010, 13:53) *
Завидуем молча fuck.gif

Чему завидовать-то?? твоим жалким знаниям Linux ?
Не смеши.

Отредактировал: shadowboss, - 16.8.2010, 13:57
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
TEROR^
сообщение 16.8.2010, 16:57
Сообщение #10
Стаж: 16 лет

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

Mzercer,
нуб cbf1b2bfde1a.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя 330863
сообщение 16.8.2010, 17:05
Сообщение #11


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Цитата(Mzercer @ 16.8.2010, 13:53) *
Завидуем молча fuck.gif

ты что думаеш что тут одни нубы ?
иди работай со свойм хостингом crazy.gif ,и не мешай людям думать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Katactrofa
сообщение 17.8.2010, 6:52
Сообщение #12


Стаж: 16 лет

Сообщений: 642
Благодарностей: 235
Полезность: 259

Цитата(mclaren @ 10.8.2010, 0:47) *
Доброй ночи Уважаемые! =)
После того как у меня полетел хард(битые сектора) я смог забрать от туда только сервера свои, а вот скрипты запуска не смог.
Я давно тут нашел скрипт очень полезный и очень мне понравившийся.
Функции его были стандартные start,stop. Забивался он в screnn, я мог спокойно зайти в screen -r там увдиеть названия своих серверов а дальше через скрин выполнять там команды на сервере и выходить стандартным способом, в общем говоря как всегда. Тут я видел скрипты на форуме они либо на daemon, либо если на скрин то у меня как и в прошлый раз не запускалось, а вот на том что я нашел тут когда т овсе работало, но теперь не могу найти.
Предложите какой нибудь подходящий скрипт запуска.
PS.Там для удобства можно еще было обозвать имя скрина, что бы в screen -r не путаться и видеть на каком скрине какой сервер висит.
Заранее благодарю за помощь!


Держи :biggrin:
Скриптег
#!/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.
. /lib/lsb/init-functions

VERSION=0.92

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

SERVER_NAME="" #Название сервера
screen_name=cwserver #Название screen-сессии
path="" #Путь до ROOT-директории сервера
hlds_ip= #IP сервера
hlds_port=27015 #Порт сервера
hlds_gametype=cstrike #Тип игры
hlds_players=13 #Максимальное количество игроков на сервере
hlds_map=de_dust2 #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-binary ./hlds_i686 -pingboost 1 -noipx +exec server.cfg" #Дополнительные параметры запуска
use_user= #Имя юзера от которого запускается сервер
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 = 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 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 = 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


Отредактировал: Katactrofa, - 17.8.2010, 6:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mzercer
сообщение 17.8.2010, 12:40
Сообщение #13
Стаж: 15 лет

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

Цитата(Katactrofa @ 17.8.2010, 8:52) *
Держи :biggrin:
Скриптег
#!/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.
. /lib/lsb/init-functions

VERSION=0.92

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

SERVER_NAME="" #Название сервера
screen_name=cwserver #Название screen-сессии
path="" #Путь до ROOT-директории сервера
hlds_ip= #IP сервера
hlds_port=27015 #Порт сервера
hlds_gametype=cstrike #Тип игры
hlds_players=13 #Максимальное количество игроков на сервере
hlds_map=de_dust2 #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="-binary ./hlds_i686 -pingboost 1 -noipx +exec server.cfg" #Дополнительные параметры запуска
use_user= #Имя юзера от которого запускается сервер
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 = 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 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 = 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

Порадовала реализация запуска на ядро.

Сможешь сделать простой скрипт для запуска сервера,но с использованием use_core ?

Скажем, у меня есть скрипт запуска:
screen -A -m -d -S 27015 ./hlds_run -game cstrike -noipx -maxplayers 32 +map de_dust2 +ip ... +port 27015 +sv_lan 0

а нужно тоже самое, но с возможностью выбора ядра.

Есть идеи как такое реализовать без "тяжелого" кода? Тоесть в пару тройку строк?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 18.8.2010, 15:16
Сообщение #14


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Mzercer,

Цитата
use_core="0" (0 первое ядро,1 второе ядро)
taskset -c $use_core screen -A -m -d -S 27015 ./hlds_run -game cstrike -noipx -maxplayers 32 +map de_dust2 +ip ... +port 27015 +sv_lan 0


Отредактировал: 330863, - 18.8.2010, 15:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mzercer
сообщение 18.8.2010, 15:50
Сообщение #15
Стаж: 15 лет

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

Цитата(330863 @ 18.8.2010, 17:16) *
Mzercer,

thx :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 21.8.2010, 18:09
Сообщение #16


Стаж: 19 лет

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

Mzercer,
Я уж не со всем такой нуб что бы не допереть что без пакета screen и команды его работать не будут.
Katactrofa,
Спасибо, проверю, отпишусь. =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 21.8.2010, 18:34
Сообщение #17


Стаж: 19 лет

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

Вот так вот и сразу заминка....
Код
/etc/init.d/hlds_csdm: line 20: /lib/lsb/init-functions: No such file or directory


Отредактировал: mclaren, - 21.8.2010, 18:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mzerder
сообщение 21.8.2010, 18:49
Сообщение #18
Стаж: 15 лет

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

Цитата(mclaren @ 21.8.2010, 20:09) *
Mzercer,
Я уж не со всем такой нуб что бы не допереть что без пакета screen и команды его работать не будут.
Katactrofa,
Спасибо, проверю, отпишусь. =)



Цитата(mclaren @ 21.8.2010, 20:34) *
Вот так вот и сразу заминка....
Код
/etc/init.d/hlds_csdm: line 20: /lib/lsb/init-functions: No such file or directory

И это называется, что вы хоть что-то знаете?

Елементарное отсутствее директории понять не можете. psych.gif


!
Аккаунт пользователя заблокирован до: 27.5.2375, 18:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mclaren
сообщение 21.8.2010, 18:51
Сообщение #19


Стаж: 19 лет

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

Mzerder, Как бы критиковать каждый может, а вот помочь ума не хватает.
PS.Прежде чем, флудить что я то не посмотрел или это, подумай и спроси, может я уже это делал и догадался сам.



В Gentoo этой дериктории нету. Я так понимаю это etc/init.d/functions.sh
Попробовал изменить, убрав при этом еще перед началом этой строки "." тогда стало все без ошибки работать, но сервер не запускается.

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


Стаж: 19 лет

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

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