Лаборатория Ubuntu
Опыт установки, настройки и использования
Ubuntu Linux Вопросы и ответы Об Ubuntu Новости Игры Записки для новичка
Поиск:

Почему не работает скрипт | Форум


Вернуться к спискам тем

 Тимур Гатин создал тему 16.02.2010 в 11:10
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
/bin/bash PIDFILE=/home/gamer/hlds_classic/cs.pid comands=./hlds_run -game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100 RETVAL=0 path=/home/gamer/hlds_classic start() { if [ -d 036;path ]; then cd 036;path start-stop-daemon --start --background --make-pidfile --pidfile 036;{PIDFILE} --chuid gamer -a 036;{comands} но при запуске ./test start start-stop-daemon: group `ame39; not found Кажеться дело в том что он строку comands=./hlds_run -game воспринимает как продолжение команды.
Цитировать

 Менеджер по рекламе рекомендует
 Знаток своего дела  Сообщений: 1987
 Репутация: 5055

 Сейчас на форуме

 Граф Николаус ответил 16.02.2010 в 11:36
 Спец  Сообщений: 731
 Репутация: 302

 Сейчас не на форуме
А в чем суть файла cs.pid, и зачем используется start-stop-daemon, он же вроде исключительно для запуска скриптов при переключении ранлевелов?
Цитировать

 Тимур Гатин ответил 16.02.2010 в 12:00
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Расскажу ))Изначально скрипт был такй pastebin_com/m5d5bef87Всё было хорошо пока сервер был один. после того как я поставил второй сервер, с измененым для него скриптом запуска. По команде skript_name stop у меня прибиваються оба сервера а не тот для которого я делаю стоп. оно и понятно вот тут Код:if [ -f 036;path/cstrike_run ]; then killall hlds_run killall hlds_i686 cd 036;path rm -R ./cstrike_runпросто глушатся процессы с именем hlds_run а они одинаковы. Вот решил что останавливать надо по умному писать в pid файл id процесса и на команде стоп выдирать id из пид файла и делать kill id. К сожалению как записать id процесса в пид файл я не нашел. Подсказали что нужно использовать даемон.Вместо нижнего подчеркивания в ссылке поставте точку.
Цитировать

 Граф Николаус ответил 16.02.2010 в 12:52
 Спец  Сообщений: 731
 Репутация: 302

 Сейчас не на форуме
может, тогда проще так?(к примеру)start() {if [[ `ps -ae | grep 39;hl.exe39;` == 39;39; ]]; then { если серверов пока не запущеноecho Run First CStrike serverwine ./hl.exe -opengl -game cstrikepidof hl.exe gt; ./both_pids} если хоть один уже работаетelse {echo Run Second CStrike serverwine ./hl.exe -opengl -game cstrike фактически, мы можем запустить хоть десять приложений, все их PID будут отличаться друг от друга в бОльшую сторону, ключ pidof -s заставит выдать последний присвоенный pid, если их несколько. pidof -s hl.exe gt;gt; ./both_pids}; fi}stop() { мы запустили несколько процессов, все их PID выстроены в столбик по одному, и командой cat мы их нумеруем по порядку, таким образом, в 036;1 мы можем указать всего лишь порядковый номер приложения, т.е. каким по счету мы его запускали - первым, вторым, пятидесятым . естественно, указать сразу мы можем хоть десяток, через пробел)kill `cat ./both_pids -n | grep 39;092;lt;39;036;{1}39;092;gt;39; | cut -f2` или форсировано казнить всехнах Х) kill -9 `cat ./both_pids -n | grep 39;092;lt;39;036;{1}39;092;gt;39; | cut -f2` также для ULTRA KILLif [[ 036;{1} == 39;--all39; ]]; then kill -9 `cat ./both_pids`; fi}*поправил в 13:45 по дефолт-сити)просто была уязвимость - при запуске от рута (хоть нормальный человек и не стал бы запускать wine из-под рута,) скрипт мог убить init и ядерные процессы
Цитировать

 Тимур Гатин ответил 16.02.2010 в 14:28
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Не сказал бы что проще Мне надо управлять серверами гибко, они все разные. Например запустить второй а первый стопнуть наоборот, а потом через 5 минут, рестартануть 3й сервер. Поэтому я делал все отдельными скрпиптами.П.С Сервера контры кстати в отличие от самой контры нативные поэттому они не через вине.
Цитировать

 Граф Николаус ответил 16.02.2010 в 15:06
 Спец  Сообщений: 731
 Репутация: 302

 Сейчас не на форуме
А нафига столько?%)^UИ чем они так отличаются?)Ты сам написал К сожалению как записать id процесса в пид файл я не нашел к тому же наверху больше моих комметариев с вариантами, а строчек кода там всего 13) можно конечно завести папочку, и там плодить на каждый процесс собственный файл с его PID, только надо ли? О_о
Цитировать

 Тимур Гатин ответил 16.02.2010 в 15:30
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Ну вообще там на одном физическом сервер будет несколько игровых(физических тоже несколько). Одних контровых планирую 3-5 только(на самом деле это очень мало даже). Это игровой проект для одного крупного провайдера в одном крупном городе. Отличаються модами. Первый это паблик контра, стандартная всем известная, вторая это биохазард мод, Потом gan mode, еще возможно версия для клан варов. Ну и тд.
Цитировать

 Тимур Гатин ответил 16.02.2010 в 15:37
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Стопдавайте сформулирую поточнее.Итак есть папки cs_1 cs_2 cs_3 В них исполняемые файлы с одинаковыми именами hlds_run.Есть стартовые скрипты(они потом пойдут в init.d) autoran_cs_1 autoran_cs_2 итдкаждый авторан запускает свой hlds_run(отличаются только pid), который в свою очередь порождает свой процесс hlds_i686Надо чтобы каждый авторан мог убивать ИМЕННО свои hlds_run и hlds_i686Вот так вот выглядит ps -aux | grep csgamer 5640 0.0 0.0 1752 552 pts/0 S 14:58 0:00 /bin/sh ./hlds_run -game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100gamer 5649 9.9 1.6 84632 68380 pts/0 Sl 14:58 3:48 ./hlds_i686 -game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100
Цитировать

 Тимур Гатин ответил 16.02.2010 в 15:45
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Вся проблемма в том что ./hlds_run -game букву g он воспригнимает как параметр для start-stop-daemon .Я уже пробовал по разному ковычить их не получаеться почему то.
Цитировать

 Тимур Гатин ответил 16.02.2010 в 16:12
 Студент  Сообщений: 213
 Репутация: 95

 Сейчас не на форуме
Еще более упростил просто в конслои выполняюstart-stop-daemon --start --make-pidfile --pidfile 036;{PIDFILE} --chuid gamer --exec /home/gamer/hlds_classic/hlds_run -- -game cstrike -nomaster +map cs_assault +port 27015 -maxplayers 24 +mp_freezetime 3 +exec server.cfg -pingboost 1 +sys_ticrate 10000 +sv_maxupdaterate 100ПишетInvalid game type 39;cstrike39; sepecified.Втр Фев 16 16:11:37 MSK 2010: Server Faile
Цитировать


Чтобы ответить, нужно авторизоваться здесь

Страницы: 1 2 3


Пользователь
Авторизация на сайте:
Email:
Пароль:
Запомнить (Регистрация)

Новости
Ubuntu
Linux
Сайт
Игры
 Игры для Ubuntu
Текущие проблемы:
8.10 пробела с amarok и CP1251
Дата создания: 03.11.2008 13:48
8.10 vs Intel HDA
Дата создания: 02.11.2008 13:41
8.10 и audacious
Дата создания: 02.11.2008 6:28
8.10 и firefox
Дата создания: 02.11.2008 1:55
VMware Workstation 6.5 на Ubuntu 8.10 x86_64
Дата создания: 01.11.2008 14:18
Проблема с Pidgin и автоматическим вылетом во вход в систему
Дата создания: 30.10.2008 19:02

2010-2012 © Лаборатория Ubuntu