Скрипт запуска HLDS-серверов + Source NEW, 0.96 |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
Скрипт запуска HLDS-серверов + Source NEW, 0.96 |
b.rash
|
27.9.2012, 5:25
Сообщение
|
|
|
)). да. просто /etc/init.d/cs console
|
|
|
|
Kain_wrath
|
4.10.2012, 10:01
Сообщение
|
|
|
Не подскажете как привязывать процесс к ядру в многопроцесорной системе?)
|
|
|
|
Predator.Cat
|
30.10.2012, 16:09
Сообщение
|
![]() |
запустил 1 сервер,потом проделал все тоже самое запуская второй - в ответ получил дулю p.s CentOS все,доперло Хоть бы поведал остальным, в чём допёрло. Меня вот не допёрло пока. Аналогичная проблема. CentOS 6.3. Скрипт №1 #!/bin/bash # chkconfig: 2345 95 20 # description: HLDS Start Script # Start HLDS Server # processname: hlds # author: LeXiKoN http://eqline.ru # version: 0.98 # Source function library. . /etc/rc.d/init.d/functions VERSION=0.98 ##################################################### # Конфигурирование ##################################################### SERVER_NAME="ZiON CS 1.6 Classic" #Название сервера screen_name=classic #Название screen-сессии path="/opt/hlds/" #Путь до ROOT-директории сервера hlds_ip=**.***.***.** #IP сервера hlds_port=27015 #Порт сервера hlds_gametype=cstrike #Тип игры hlds_players=32 #Максимальное количество игроков на сервере hlds_map=de_dust2_2x2 #Имя первоначальной карты при запуске hlds_pid=cs.pid screen_pid=$screen_name-screen.pid hlds_options="-pingboost 3 -timeout 30 +sv_lan 0 -master -insecure +sys_ticrate 1000 +exec server.cfg +log on" #Дополнительные параметры запуска use_user=hlds #Имя юзера от которого запускается сервер condebug=1 check_version=0 checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера restarttime=10 #Время после которого сервер будет перезагружен ( выводится в чат на сервере ) #---------------------------------------------------- # Номер ядра/процессора в линуксе # 2х-ядерные: 0 - первое ядро, 1 - второе ядро # 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро # По аналогии с другими многоядерными процессорами use_core=0 #---------------------------------------------------- Скрипт №2 #!/bin/bash # chkconfig: 2345 95 20 # description: HLDS GunGame Start Script # Start HL GunGame Server # processname: hlgg # author: LeXiKoN http://eqline.ru # version: 0.98 # Source function library. . /etc/rc.d/init.d/functions VERSION=0.98 ##################################################### # Конфигурирование ##################################################### SERVER_NAME="ZiON CS 1.6 GunGame" #Название сервера screen_name=gungame #Название screen-сессии path="/opt/gg/" #Путь до ROOT-директории сервера hlds_ip=**.***.***.** #IP сервера hlds_port=27016 #Порт сервера hlds_gametype=cstrike #Тип игры hlds_players=32 #Максимальное количество игроков на сервере hlds_map=de_dust2_2x2_b #Имя первоначальной карты при запуске hlds_pid=gg.pid screen_pid=$screen_name-screen.pid hlds_options="-pingboost 3 -timeout 30 +sv_lan 0 -master -insecure +sys_ticrate 1000 +exec server.cfg +log on" #Дополнительные параметры запуска use_user=hlds #Имя юзера от которого запускается сервер condebug=1 check_version=0 checker_command="quakestat" #Команда пакета qStat отвечающего за проверку сервера restarttime=10 #Время после которого сервер будет перезагружен ( выводится в чат на сервере ) #---------------------------------------------------- # Номер ядра/процессора в линуксе # 2х-ядерные: 0 - первое ядро, 1 - второе ядро # 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро # По аналогии с другими многоядерными процессорами use_core=1 #---------------------------------------------------- Скрипт №2 не запускает сервер gg. При этом, по service gg status, говорит, что ONLINE. Моим скриптом запускается. Мой скрипт #/bin/bash/ cd /opt/gg export LD_LIBRARY_PATH=/opt/gg:$LD_LIBRARY_PATH ./hlds_run -binary ./hlds_i686 -debug -timeout 30 +sv_lan 0 -master -insecure -game cstrike +ip **.***.***.** +port 27016 +maxplayers 32 +sys_ticrate 700 -pingbooster 2 > hlds.log 2>&1 & И, пользуясь случаем, хотелось бы узнать, куда оно пишет логи? Вот, что мне сообщила консоль: console L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'MySQL': MySQL v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'Fun': Fun v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'FakeMeta': FakeMeta v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'CStrike': CStrike v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'CSX': CSX v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] ERROR: Failed to find memloc for regcmd 'ham' L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'Ham Sandwich': Ham Sandwich v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team stray key in process_key: item_getiteminfo 63 L 10/31/2012 - 14:43:23: [META] dll: Loaded plugin 'AMX Mod X': AMX Mod X v1.8.1.3746 Aug 16 2008, AMX Mod X Dev Team L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'MySQL'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'mysql_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'Fun'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'fun_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'FakeMeta'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'fakemeta_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'CStrike'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'cstrike_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'CSX'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'csx_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] ERROR: dll: Not loading plugin 'Ham Sandwich'; already loaded (status=running) L 10/31/2012 - 14:43:23: [META] ERROR: dll: Failed to load plugin 'hamsandwich_amxx_i386.so' L 10/31/2012 - 14:43:23: [META] dll: Finished loading 2 plugins map change failed: 'de_dust2_2x2_b' not found on server.
Отредактировал: Predator.Cat, - 31.10.2012, 13:34
|
|
|
|
Predator.Cat
|
31.10.2012, 12:47
Сообщение
|
![]() |
[deleted]
Отредактировал: Predator.Cat, - 31.10.2012, 13:33
|
|
|
|
Predator.Cat
|
30.11.2012, 20:42
Сообщение
|
![]() |
Кстати, изменение прав доступа на 777 решило и проблему, описанную выше.
Отредактировал: Predator.Cat, - 30.11.2012, 20:44
|
|
|
|
IOzer
|
21.1.2013, 4:22
Сообщение
|
![]() |
На счёт приоритета так и не вкурсе никто как сделать?
|
|
|
|
proaid
|
10.2.2013, 13:57
Сообщение
|
|
|
Ребят чет у меня все ероглифами и я с linux связался недавно и не знаю что в данном скрипте отвечает и как бы не нопртачить не могли бы вы перевести его?
Скрытый текст #!/bin/bash # chkconfig: 2345 95 20 # description: HLDS Start Script # Start HLDS Server # processname: hlds # author: LeXiKoN http://eqline.ru # version: 0.98 # Source function library. . /etc/rc.d/init.d/functions VERSION=0.98 ##################################################### # Конфигурирование ##################################################### 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 отвечающего Р·Р° проверку сервера restarttime=10 #Время после которого сервер будет перезагружен ( выводится РІ чат РЅР° сервере ) #---------------------------------------------------- # Номер СЏРґСЂР°/процессора РІ линуксе # 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 printf "$title\033[1;34m Сервер $SERVER_NAME\033[0m \033[32m(!!) РЅР° данный момент РЈР–Р• работает (!!)\033[0m\n" exit 1 else rm -rf $path/$screen_pid rm -rf $path/$hlds_pid fi fi } start() { if [ "$check_version" -eq 1 ]; then check_version fi # Проверка престартовая prestart_check 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 "\t\033[1;35m РџРѕСЂС‚ севрера:\033[0m \033[1;36m$hlds_port\033[0m\n" printf "\t\033[1;35m РџСЂРёРІСЏР·РєР° Рє СЏРґСЂСѓ:\033[0m \033[1;36m$use_core\033[0m\n" printf "\t\033[1;35m Запуск РѕС‚ юзера:\033[0m \033[1;36m$use_user\033[0m\n" printf "\t\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 "$succes\n" else printf "$failed\n" fi fi } stop() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then # ЗаверС?аем КОРРЕКТНО сервер!! printf "$title\033[1;31m Остановка $SERVER_NAME \033[0m" /usr/bin/screen -R $screen_name -p 0 -X register . quit /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' sleep 1 /usr/bin/screen -R $screen_name -X quit > /dev/null sleep 1 rm -rf $path/$screen_pid rm -rf $path/$hlds_pid printf "$succes\n" else printf "\033[1;34m Невозможно остановить $SERVER_NAME, сервер РќР• запущен \033[0m" printf "$failed\n" fi } status() { if [ "$check_version" -eq 1 ]; then check_version fi printf "$title\033[1;34m Статус сервера $SERVER_NAME \033[0m\n" printf "\t\033[1;35m РџРѕСЂС‚ севрера:\033[0m \033[1;36m$hlds_port\033[0m\n" printf "\t\033[1;35m Привязан Рє СЏРґСЂСѓ:\033[0m \033[1;36m$use_core\033[0m\n" printf "\t\033[1;35m Запущен РѕС‚ юзера:\033[0m \033[1;36m$use_user\033[0m\n" printf "\t\033[1;33m Статус: \033[0m" sleep 1 ch=`ps -ef | grep SCREEN | grep $screen_name` if [ -n "$ch" ]; then printf "$status_on\n" else printf "$status_off\n" fi } console() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then printf "$title\033[1;34m Подключение Рє консоли $SERVER_NAME сервера \033[0m\n" printf "\t\033[36m Для выхода РёР· консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n" printf "\t\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n" printf "\t\033[36m Для выхода РёР· режима листинга нажать \033[1;36mEsc \033[0m\n" printf "\t\033[1;31m Внимание!!! РџРѕ неаккуратности РјРѕР¶РЅРѕ положить сервер :D \033[0m\n" concnt=5 while [ $concnt -gt 0 ]; do echo -en "\r\t Консоль включится через $concnt сек " let concnt=concnt-1 sleep 1 done /usr/bin/screen -R $screen_name printf "\t$succes\n" else printf "\033[1;31m Невозможно подключиться Рє $SERVER_NAME, сервер РЅРµ запущен \033[0m\n" fi } compile() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -d $path/cstrike/addons/amxmodx ]; then printf "$title\033[32m Компиляция плагинов AmxModX \033[0m\n" printf "\t\033[36m Компилируются исходные файлы (sma), находящиеся РІ директории {addons/amxmodx/scripting/*.sma} \033[0m\n" printf "\t\033[36m РџРѕ заверС?ению компиляции нажмите Q для выхода \033[0m\n" printf "\t\033[36m Компиляция начнется через 2 секунды. \033[0m\n" sleep 2 cd $path/cstrike/addons/amxmodx/scripting ./compile.sh printf "\t\033[32m Плагины скомпилированы \033[0m $succes\n" else printf "\033[22;31m Проверьте установлен ли AmxModX (??) \033[0m $failed\n" fi } check_version() { printf "$title\033[1;34m Проверка обновлений скрипта \033[0m\n" cd $path rm -f version.txt wget http://eqline.ru/project/hlds_init_script/version.txt 1> /dev/null 2>&1 printf "\t Загрузка " updcnt=3 while [ $updcnt -gt 0 ]; do printf "." let updcnt=updcnt-1 sleep 1 done sleep 1 printf "\n" for ver in `cat $path/version.txt` do if [ $VERSION \< $ver ]; then printf "\t\033[1;31m Доступна новая версия скрипта ( $ver )\033[0m\n" printf "\t\033[36m Подробнее РЅР° форуме eQline.ru: http://forum.eqline.ru \033[0m\n" printf "\t\033[1;36m Ссылка: http://forum.eqline.ru/topic/361-СЃРєСЂРёР...ерверов/ \033[0m\n" else printf "\t\033[1;36m Р’Р°С?Р° версия является последней\033[0m \033[1;34m( Текущая версия: $VERSION ) \033[0m\n" fi break done rm -f version.txt } check_logsize() { printf "$title\033[1;34m Проверка размера .log файлов \033[0m\n" maxlogsize=10485760 if [ -f $path/checker.log ]; then sizeCheckUP=`stat -c%s $path/checker.log` printf "\t\033[1;36m Размер checker.log:\033[0m \033[1;35m $sizeCheckUP байт\033[0m\n" if [ "$sizeCheckUP" -ge "$maxlogsize" ]; then printf "\t\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 "\t\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 "\t\033[1;36m Размер qconsole.log:\033[0m \033[1;35m $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 "\t\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 } prerestart() { if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then printf "$title\033[1;31m Начинается отчет РґРѕ рестарта $SERVER_NAME \033[0m\n\t" cnt=$restarttime while [ $cnt -gt 0 ]; do /usr/bin/screen -R $screen_name -p 0 -X register . "say Server has been restart after $cnt seconds!" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' echo -en "\r\t Рестарт через $cnt сек" let cnt=cnt-1 sleep 1 done /usr/bin/screen -R $screen_name -p 0 -X register . "say =============================================" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' /usr/bin/screen -R $screen_name -p 0 -X register . "say [ SERVER SHUTTING DOWN ]" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' /usr/bin/screen -R $screen_name -p 0 -X register . "say =============================================" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' printf "$succes\n" fi } case "$1" in start) check_logsize start ;; stop) stop ;; restart) prerestart sleep 2 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 |
|
|
|
stonemct
|
10.2.2013, 15:55
Сообщение
|
|
|
Ребят чет у меня все ероглифами и я с linux связался недавно и не знаю что в данном скрипте отвечает и как бы не нопртачить не могли бы вы перевести его? Скрытый текст #!/bin/bash # chkconfig: 2345 95 20 # description: HLDS Start Script # Start HLDS Server # processname: hlds # author: LeXiKoN http://eqline.ru # version: 0.98 # Source function library. . /etc/rc.d/init.d/functions VERSION=0.98 ##################################################### # Конфигурирование ##################################################### 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 отвечающего Р·Р° проверку сервера restarttime=10 #Время после которого сервер будет перезагружен ( выводится РІ чат РЅР° сервере ) #---------------------------------------------------- # Номер СЏРґСЂР°/процессора РІ линуксе # 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 printf "$title\033[1;34m Сервер $SERVER_NAME\033[0m \033[32m(!!) РЅР° данный момент РЈР–Р• работает (!!)\033[0m\n" exit 1 else rm -rf $path/$screen_pid rm -rf $path/$hlds_pid fi fi } start() { if [ "$check_version" -eq 1 ]; then check_version fi # Проверка престартовая prestart_check 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 "\t\033[1;35m РџРѕСЂС‚ севрера:\033[0m \033[1;36m$hlds_port\033[0m\n" printf "\t\033[1;35m РџСЂРёРІСЏР·РєР° Рє СЏРґСЂСѓ:\033[0m \033[1;36m$use_core\033[0m\n" printf "\t\033[1;35m Запуск РѕС‚ юзера:\033[0m \033[1;36m$use_user\033[0m\n" printf "\t\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 "$succes\n" else printf "$failed\n" fi fi } stop() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then # Завершаем КОРРЕКТНО сервер!! printf "$title\033[1;31m Остановка $SERVER_NAME \033[0m" /usr/bin/screen -R $screen_name -p 0 -X register . quit /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' sleep 1 /usr/bin/screen -R $screen_name -X quit > /dev/null sleep 1 rm -rf $path/$screen_pid rm -rf $path/$hlds_pid printf "$succes\n" else printf "\033[1;34m Невозможно остановить $SERVER_NAME, сервер РќР• запущен \033[0m" printf "$failed\n" fi } status() { if [ "$check_version" -eq 1 ]; then check_version fi printf "$title\033[1;34m Статус сервера $SERVER_NAME \033[0m\n" printf "\t\033[1;35m РџРѕСЂС‚ севрера:\033[0m \033[1;36m$hlds_port\033[0m\n" printf "\t\033[1;35m Привязан Рє СЏРґСЂСѓ:\033[0m \033[1;36m$use_core\033[0m\n" printf "\t\033[1;35m Запущен РѕС‚ юзера:\033[0m \033[1;36m$use_user\033[0m\n" printf "\t\033[1;33m Статус: \033[0m" sleep 1 ch=`ps -ef | grep SCREEN | grep $screen_name` if [ -n "$ch" ]; then printf "$status_on\n" else printf "$status_off\n" fi } console() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then printf "$title\033[1;34m Подключение Рє консоли $SERVER_NAME сервера \033[0m\n" printf "\t\033[36m Для выхода РёР· консоли поочерёдно нажать \033[1;36mCtrl+A, D \033[0m\n" printf "\t\033[36m Для листинга консоли поочерёдно нажать \033[1;36mCtrl+A, Esc \033[0m\n" printf "\t\033[36m Для выхода РёР· режима листинга нажать \033[1;36mEsc \033[0m\n" printf "\t\033[1;31m Внимание!!! РџРѕ неаккуратности РјРѕР¶РЅРѕ положить сервер :D \033[0m\n" concnt=5 while [ $concnt -gt 0 ]; do echo -en "\r\t Консоль включится через $concnt сек " let concnt=concnt-1 sleep 1 done /usr/bin/screen -R $screen_name printf "\t$succes\n" else printf "\033[1;31m Невозможно подключиться Рє $SERVER_NAME, сервер РЅРµ запущен \033[0m\n" fi } compile() { if [ "$check_version" -eq 1 ]; then check_version fi if [ -d $path/cstrike/addons/amxmodx ]; then printf "$title\033[32m Компиляция плагинов AmxModX \033[0m\n" printf "\t\033[36m Компилируются исходные файлы (sma), находящиеся РІ директории {addons/amxmodx/scripting/*.sma} \033[0m\n" printf "\t\033[36m РџРѕ завершению компиляции нажмите Q для выхода \033[0m\n" printf "\t\033[36m Компиляция начнется через 2 секунды. \033[0m\n" sleep 2 cd $path/cstrike/addons/amxmodx/scripting ./compile.sh printf "\t\033[32m Плагины скомпилированы \033[0m $succes\n" else printf "\033[22;31m Проверьте установлен ли AmxModX (??) \033[0m $failed\n" fi } check_version() { printf "$title\033[1;34m Проверка обновлений скрипта \033[0m\n" cd $path rm -f version.txt wget http://eqline.ru/project/hlds_init_script/version.txt 1> /dev/null 2>&1 printf "\t Загрузка " updcnt=3 while [ $updcnt -gt 0 ]; do printf "." let updcnt=updcnt-1 sleep 1 done sleep 1 printf "\n" for ver in `cat $path/version.txt` do if [ $VERSION \< $ver ]; then printf "\t\033[1;31m Доступна новая версия скрипта ( $ver )\033[0m\n" printf "\t\033[36m Подробнее РЅР° форуме eQline.ru: http://forum.eqline.ru \033[0m\n" printf "\t\033[1;36m Ссылка: http://forum.eqline.ru/topic/361-СЃРєСЂРёР...ерверов/ \033[0m\n" else printf "\t\033[1;36m Ваша версия является последней\033[0m \033[1;34m( Текущая версия: $VERSION ) \033[0m\n" fi break done rm -f version.txt } check_logsize() { printf "$title\033[1;34m Проверка размера .log файлов \033[0m\n" maxlogsize=10485760 if [ -f $path/checker.log ]; then sizeCheckUP=`stat -c%s $path/checker.log` printf "\t\033[1;36m Размер checker.log:\033[0m \033[1;35m $sizeCheckUP байт\033[0m\n" if [ "$sizeCheckUP" -ge "$maxlogsize" ]; then printf "\t\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 "\t\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 "\t\033[1;36m Размер qconsole.log:\033[0m \033[1;35m $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 "\t\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 } prerestart() { if [ -f $path/$hlds_pid ] && [ -f $path/$screen_pid ]; then printf "$title\033[1;31m Начинается отчет РґРѕ рестарта $SERVER_NAME \033[0m\n\t" cnt=$restarttime while [ $cnt -gt 0 ]; do /usr/bin/screen -R $screen_name -p 0 -X register . "say Server has been restart after $cnt seconds!" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' echo -en "\r\t Рестарт через $cnt сек" let cnt=cnt-1 sleep 1 done /usr/bin/screen -R $screen_name -p 0 -X register . "say =============================================" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' /usr/bin/screen -R $screen_name -p 0 -X register . "say [ SERVER SHUTTING DOWN ]" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' /usr/bin/screen -R $screen_name -p 0 -X register . "say =============================================" /usr/bin/screen -R $screen_name -p 0 -X paste . /usr/bin/screen -R $screen_name -p 0 -X stuff $'\n' printf "$succes\n" fi } case "$1" in start) check_logsize start ;; stop) stop ;; restart) prerestart sleep 2 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 не в той кодировке открыл тебе надо добыть прогу notepad++ и в ней открыть файл и сохранить в кодировке UTF c другой стороны это в соновном комментарии так что можно их опустить скрипт будет все равно работать
Отредактировал: stonemct, - 10.2.2013, 15:55
|
Поблагодарили 1 раз
|
|
mclaren
|
23.2.2013, 19:28
Сообщение
|
![]() |
|
|
|
|
Breakt
|
14.1.2014, 11:35
Сообщение
|
![]() |
На CSGO скрипт можно переделать?
|
|
|
|
![]() ![]() |