Город Мастеров
IPB

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

4 страниц V  < 1 2 3 4 >  
Ответить в эту темуОткрыть новую тему
> Поднятие сервера
Richard
сообщение Mar 24 2006, 17:45
Сообщение #26


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Хмм... Что-то не верится. Почитаю еще мануалы чтобы самому удостовериться и скажу точно.

Как я и говорил.
Используя killall -9, вы убиваете все процессы, связанные с ним. То есть это грубое убийство процесса.
Используя killall -kill, вы убиваете процесс по PID вроде как.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 24 2006, 18:04
Сообщение #27


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



втопку мануалы
бсд - опенсурс (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение Mar 24 2006, 18:24
Сообщение #28


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Вопрос закрыли. Я был неправ. Это одна и та же команда.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение Mar 25 2006, 18:49
Сообщение #29


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



А вообще какие есть варианты написания (хотя бы в теории) скрипта авторестарта, но не бональным убийством процесса.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 25 2006, 19:20
Сообщение #30


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



CODE
HWND hWnd = FindWindow("Exo - BioWare Corp., (c) 1999 - Generic Blank Application", NULL);
if(hWnd)
    SendMessage(hWnd, WM_CLOSE, 0, 0);
(IMG:style_emoticons/kolobok_light/prankster2.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение Mar 26 2006, 16:35
Сообщение #31


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Насколько я понимаю это для винды?!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 26 2006, 17:24
Сообщение #32


Level 6
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



угу, это же winapi
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Apr 1 2006, 05:44
Сообщение #33


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Да впринципе всё просто.
Запускаем процесс, форкаемся, в чилде перенаправляем стандартные I/O куда-нить и exec'аем nwserver.
А в родительском процессе читаем и пишем серверу...
Меня кто-нибудь понял? (IMG:style_emoticons/kolobok_light/crazy.gif)
--
man fork
man exec
man dup2fd
man pipe
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 1 2006, 14:48
Сообщение #34


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



мне больше нравятся красивенькие окошечки (IMG:style_emoticons/kolobok_light/crazy.gif)

как в линуксоидах создавать потоки и обрабатывать ошибки? (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Apr 1 2006, 16:33
Сообщение #35


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



В *nix есть различные схемы мультипоточной работы.
Наиболее простая это fork() (вилка, англ.) - создание полной копии процесса-родителя.
CODE

void main() {
int pid = fork();
if(!pid) {
  // pid = 0 - означает, что мы даём команды потомку
} else {
  // pid = PID потомка, != 0, это тело родителя
}
}

В потомок форк возвращяет 0, в родитель - PID потомка, а т.к. новый процесс является ПОЛНОЙ копией родителя, то так и отслеживают, кому какие команды выполнять.
Теперь о nwserver'е... Выглядит это примерно так
CODE

void main() {
int fd[2];
int pid;
pipe(fd);
pid = fork();
if(!pid) {
  char *nwserver[] = {"nwserver", "-module", "modulename", "-pvp", "2", "-servervault", "1"};
  close(0); // отключить стандартный ввод
  close(1); // отключить стандартный вывод
  dup2(fd[1], 0); // сделать fd[1] стандартным потоком ввода
  execvp("./nwserver", nwserver);
  perror("execvp()"); // если execvp не удался, то процесс идёт дальше
  exit(1); // и эта
} else {
  while(1) {
   sleep(14400);
   write(fd[0], "module modulename", strlen("module modulename"));
  }
}
}

Вот так примерно (IMG:style_emoticons/kolobok_light/smile.gif)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение Apr 1 2006, 21:26
Сообщение #36


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Ну с fork() я немного имел дело, но суть так не понял.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 2 2006, 05:33
Сообщение #37


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



я про то, что вот есть у нас прокся (перенаправлялка пакетов или типа того)..
и хочется на каждого клиента отдельные потоки создать, а не бесконечным циклом последовательно обрабатывать каждого..
и прокся эта в адресном пространстве процесса сервера должна быть и делать с ним что хочет
(обрабатывать клиентов, следить за ошибками и т.п.)

в маздае все это делается с 2х апи, а в линуксоидах - х.з.. нужно код смореть самому (IMG:style_emoticons/kolobok_light/rtfm.gif) (IMG:style_emoticons/kolobok_light/sorry.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Apr 2 2006, 16:01
Сообщение #38


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



2_advanced, именно форками обычно и делается...
CODE

void main() {
int socket;
int newfd;
struct sockaddr_in server, client; // то-же что и SOCKADDR в Win
//...
// тут создаём сокет и всё такое, прописываем структуры, биндим сокет
// man socket
// man bind
// man listen
while(1) {
  newfd = accept(socket, (struct sockaddr *)&client, sizeof(client));
  if(!fork()) { // создаём потомка, код для потомка
   close(socket); // закрываем listen-сокет (внутри потомка, для родителя он открыт)
   // тут делаем перенаправление для конкретного клиента
  } else { // код для родителя
   close(newfd); // закрываем сокет на нового клиента, управление мы передали потомку
  }
}
}

Вот примерно так. Это для сервера.
Для клиента обычно используются не форки, а обычные треды, -lpthread опция для gcc... В принципе треды - те-же яйца только сбоку, там всё как в M$. А форк - родная никсовая фича.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
alMuk
сообщение Apr 2 2006, 16:05
Сообщение #39


Level 2
*

Класс: Клерик
Характер: Lawful Evil
Раса: Человек



QUOTE
Ну с fork() я немного имел дело, но суть так не понял.


создает точную копию процесса. Разница между родительским и дочерним процессом в pid, т.е программа может отследить кто родитель а кто потомок по pid. Если pid = 0 то идет ветка потомка, иначе продолжается ветка родителя. На этом принципе построена вся многопоточность в NIX системах.

CODE
void main() {
int pid = fork();
if(!pid) {
  // pid = 0 - означает, что мы даём команды потомку, т.е. тут исполняется ветка потомка.
} else {
  // pid = PID потомка, != 0, это тело родителя, т.е. тут продолжается ветка родителя.
}
}



если нужно запустить новую программу, то используется exec(...), который полностью затирает текущий процес загружаемой программой. Т.е. fork() в связке с exec() в дочерней ветви запустит новую программу.

Сообщение отредактировал alMuk - Apr 2 2006, 16:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 13 2006, 03:20
Сообщение #40


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



вернемся к старому корыту
вот ковырял маздай и наткнулся там на SwapContext - хрень, переключающую текущие потоки
так вот в линуксоидах оно тоже есть:
http://lib.training.ru/Lib/ArticleDetail.a...&mi=106&mic=363
об этом я и говорил

a всякие форки это типа запустил копию процесса, получив его id или узнал, что ты клон (IMG:style_emoticons/kolobok_light/drag.gif)
как это поможет сидя в одном адресном пространстве *параллельно* и многократно выполнять инструкции я х.з..

ушел учить матчасть (IMG:style_emoticons/kolobok_light/drag.gif)

Сообщение отредактировал 2_advanced - Apr 13 2006, 03:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Blaze
сообщение Apr 22 2006, 10:14
Сообщение #41


Level 12
****

Класс: Вор
Характер: Chaotic Neutral
Раса: Человек
NWN: Маппинг



Проблема следующая.. Т.к. из админа клещами слова не вытянешь, то придётся говорить максимально абстрактно.

Проблема с доступом. Есть несколько подсетей типа 192,168,х,х. При включеном впн соединении (инет у нас так раздаётся) доступ по адресам ххх.блабла.ру бесплатный. На практике доступ к серверу НВНа получался только либо по локальному ип (192,168,х.у), либо по 62,тык-тык-тык, то есть по платному инету.. А надо (в силу определённой специфики) по бесплатному (нвн.блабла.ру).

Подробнее сказать не могу, см. выше про клещи. Подскажите, куда рыть, может кто сталкивался с подобным? Или что мне надо узнать и написать сюда, чтобы вы могли ответить на этот вопрос?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Apr 22 2006, 12:52
Сообщение #42


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Выводы /sbin/ifconfig -a и /sbin/route -n в студию
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
helvene
сообщение Apr 22 2006, 17:09
Сообщение #43


Mystery
Иконки Групп

Класс: Маг
Характер: Lawful Evil
Раса: Тварь
NWN: Контент
Амен



kreon, а вы уверены, что сервак линуксовый?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Apr 22 2006, 18:12
Сообщение #44


Level 6
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



если судить по первому посту, то линуксовый

Сообщение отредактировал [MoF]Darth_Nick - Apr 22 2006, 18:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Apr 22 2006, 22:52
Сообщение #45


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Угу (IMG:style_emoticons/kolobok_light/wacko.gif) У нас тут *nix-обсуждение, и в первом посте автор это и указал.. Вряд-ли он так часто меняет сервера (IMG:style_emoticons/kolobok_light/biggrin.gif)
Кстати, route работает и в винде
А вместо ifconfig можно использовать ipconfig (IMG:style_emoticons/kolobok_light/aggressive.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
helvene
сообщение Apr 22 2006, 23:03
Сообщение #46


Mystery
Иконки Групп

Класс: Маг
Характер: Lawful Evil
Раса: Тварь
NWN: Контент
Амен



Я балда!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение May 12 2006, 21:15
Сообщение #47


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Опять насущен вопрос по поводу отучалки нвсервера проверять ключи на валидность.
Так вот если забивать в нвсервер всяким хламом строку ^F_RGASE@SY^ERFU|RWT и XEWTMGX..A.[[WVT.SY]E.SW^ то затем при запуске нвсервера вылетает ошибка Segmentation fault (core dumped).
Подскажите, мож где ошибся... Просто другого выхода кроме как так гемороиться у меня нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение May 12 2006, 23:32
Сообщение #48


Level 8
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Версия какая? Для 65 могу дать фикс, для 66 и 67 знаю только "фаервольный" метод... или хук connect(3) (IMG:style_emoticons/kolobok_light/wink3.gif)

Сообщение отредактировал kreon - May 12 2006, 23:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение May 13 2006, 00:31
Сообщение #49


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



QUOTE(Richard @ May 12 2006, 22:15) [snapback]81497[/snapback]

Опять насущен вопрос по поводу отучалки нвсервера проверять ключи на валидность.
Так вот если забивать в нвсервер всяким хламом строку ^F_RGASE@SY^ERFU|RWT и XEWTMGX..A.[[WVT.SY]E.SW^ то затем при запуске нвсервера вылетает ошибка Segmentation fault (core dumped).
Подскажите, мож где ошибся... Просто другого выхода кроме как так гемороиться у меня нет.

Значит, перестарался. Затирай лучше нулями циферки, которые за ними следуют.
А вот айпишники ты оттуда фиг вытащишь.. Они там хитро спрятаны. (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал virusman - May 13 2006, 00:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение May 13 2006, 09:02
Сообщение #50


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек




kreon
Версия 1.67.
virusman
Ок. Попробую.

Затер нулями циферки. Сервант запустился, но проверка осталась. Видно еще где то запрятано.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

4 страниц V  < 1 2 3 4 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16th April 2024 - 15:33