Модераторы: ginnie, korob2001

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помгите создать дочерние процессы, Почему не создается более 64 процессов 
:(
    Опции темы
StealtH
Дата 4.10.2004, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Такая возникла трабла, нужно создать несколько дочерних процессов, точнее 255, а создается только 64. С чем это связано, и как это можно исправить. Подскажите пожалуйста, или подкинте ссылочку на документацию, плиз
PM MAIL   Вверх
chaos
Дата 4.10.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 3
Всего: 44



Возник вопросик нах тебе столько процессов??? rolleyes.gif
PM WWW   Вверх
StealtH
Дата 4.10.2004, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(chaos @ 4.10.2004, 09:48)
Возник вопросик нах тебе столько процессов??? rolleyes.gif

Ну о-о-о-о-о-чень нужно biggrin.gif
PM MAIL   Вверх
GoodBoy
Дата 4.10.2004, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



StealtH
А ты уверен, что другова пути нет????


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
ElectricalStorm
Дата 4.10.2004, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



ключевые слова: fork, use threads, use Threads;


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
StealtH
Дата 4.10.2004, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 4.10.2004, 11:03)
StealtH
А ты уверен, что другова пути нет????

Пробовал делать через дескрипторы файлов, через system, через обратные кавычки, везде один и тотже результат, может это операционка накладывает свои ограничения, если так, то где почитать как с этим бороться.
Добавлено @ 18:05
Цитата(ElectricalStorm @ 4.10.2004, 13:07)
ключевые слова: fork, use threads, use Threads;

Не помогаетsad.gif
PM MAIL   Вверх
GoodBoy
Дата 4.10.2004, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



StealtH
Нет, ты не понял!!!!! Опиши задачу!!! Может есть другой путь решения, чем плодить процессы!!!!!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
StealtH
Дата 5.10.2004, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 4.10.2004, 18:06)
StealtH
Нет, ты не понял!!!!! Опиши задачу!!! Может есть другой путь решения, чем плодить процессы!!!!!

Вообщем суть дела такова. Есть определенный диапазон IP-адресов(большой), который нужно отслеживать на наличие различных сервисов(Apache, фтп, и т.д.). Есть скрипт, который все это прекрасно делает(сам написал), суть работы такова, сначала пингуем хост, а потом производим с ним остальные действия. Т.к. хостов много около 1000, то, нужно, чтоб сервер их пинговал сразу и по многу, т.е. брал маску адреса(типа 192.168.100.) а остальные цифры последнего актета подставлял сам скрипт, и результаты выбрасывал в текстовый файл с именем аналогичным хосту, потом берет из папки с результатами(т.е. файлами результатов пинга) обрабатывает. Почему нужно много и сразу, потому что результаты должны обновлятся через короткие промежутки времени. Пробовал использовать Net::Ping, но результаты пинга больше чем в реале раза в два-три, это(как мне объяснили) результат того, что используются библиотеки перла, которые перед трансляцией подгружаются, поэтому именно из-за этого вариант сразу отпал. Выход единственный - пинговать системной командой, и для этого запускать ее как отдельный процесс. С порождением нужного количества процессов на моем серваке(Linux Interprase)проблем нет, у меня там права рута, но в конечном итоге скрипт будет работать на сервере, где у меня таких прав не будет, да и скрипту их никто не даст(он будет работать с консольном режиме и запускаться через crontab). Поэтому вот и приходится находить другие пути. Вот в принципе практически все.
PM MAIL   Вверх
GoodBoy
Дата 5.10.2004, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Цитата(StealtH @ 5.10.2004, 03:21)
Пробовал использовать Net::Ping, но результаты пинга больше чем в реале раза в два-три, это(как мне объяснили) результат того, что используются библиотеки перла, которые перед трансляцией подгружаются, поэтому именно из-за этого вариант сразу отпал.

Цитата(StealtH @ 5.10.2004, 03:21)
С порождением нужного количества процессов на моем серваке(Linux Interprase)проблем нет

А теперь представь СКОЛЬКО системных ресурсов тебе надо, чтобы запустить 256 клонов своего скрипта, КАЖДЫЙ из которых запустит свою версию интерпретатора Перл... Ты уверен, что fork 256 процессов - это единственный выход???


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
StealtH
Дата 5.10.2004, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 5.10.2004, 10:10)
А теперь представь СКОЛЬКО системных ресурсов тебе надо, чтобы запустить 256 клонов своего скрипта, КАЖДЫЙ из которых запустит свою версию интерпретатора Перл... Ты уверен, что fork 256 процессов - это единственный выход???

Ну если какой-нить другой выход есть, то подскажи пожалуйста, буду признателен.
PM MAIL   Вверх
GoodBoy
Дата 5.10.2004, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Могу предложить тебе, ну скажем к примеру, запускать 8 или 16 процессов и поделить между ними всё адресное пространство... Тогда и нагрузка на сервер будет не очень высокая и скорость работы возрастёт по сравнению с одним процессом...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Nobody
Дата 5.10.2004, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: нет
Всего: 16



Эээ... А старый добрый nmap не устраивает?


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
StealtH
Дата 5.10.2004, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 5.10.2004, 13:06)
Могу предложить тебе, ну скажем к примеру, запускать 8 или 16 процессов и поделить между ними всё адресное пространство... Тогда и нагрузка на сервер будет не очень высокая и скорость работы возрастёт по сравнению с одним процессом...

По подробнее если можно, потому что я с этим не сталкивался, и понятия не имею, или ссылочку где почитать по данному поводу.
PM MAIL   Вверх
GoodBoy
Дата 6.10.2004, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



StealtH
Ну смотри, есть у тебя скрипт, который опрашивает удалённый хост. К примеру по крону ты запускаешь 8 экземпляров этого скрипта с параметрами:
Код
./search.pl 0 31
./search.pl 32 63
./search.pl 64 96
       ...
./search.pl 223 255

а в самом скрипте читаешь начальное и конечное значение последнего сегмента адреса

Код
my $start = shift @ARGV;
my $end = shift @ARGV;

и дальше простейший цикл:
Код
for (my $last_addr=$start; $last_addr<=$end; $last_addr++) {
       my $full_addr = "192.168.100.$last_addr";

# И вперед - делать всё, что нужно!!!

}

Таким образом каждый из 8 процессов обработает свои 32 хоста...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
StealtH
Дата 6.10.2004, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 6.10.2004, 10:01)
StealtH
Ну смотри, есть у тебя скрипт, который опрашивает удалённый хост. К примеру по крону ты запускаешь 8 экземпляров этого скрипта с параметрами:
Код
./search.pl 0 31
./search.pl 32 63
./search.pl 64 96
       ...
./search.pl 223 255

а в самом скрипте читаешь начальное и конечное значение последнего сегмента адреса

Код
my $start = shift @ARGV;
my $end = shift @ARGV;

и дальше простейший цикл:
Код
for (my $last_addr=$start; $last_addr<=$end; $last_addr++) {
       my $full_addr = "192.168.100.$last_addr";

# И вперед - делать всё, что нужно!!!

}

Таким образом каждый из 8 процессов обработает свои 32 хоста...

Т.е. таким образом постараться объеденить несколько задач в одну, используя входные параметры скрипта.

Но тогда при этом, снизится скорость работы скрипта. Вообщем неплохая идея, где про это можно более подробно почитать?
PM MAIL   Вверх
GoodBoy
Дата 7.10.2004, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Цитата(StealtH @ 6.10.2004, 20:00)
Но тогда при этом, снизится скорость работы скрипта.

Ну, как ты можешь сам догадаться, нельзя одновременно кушать рыбу и карабкаться на дерево... wink.gif Нужно искать золотую середину...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
StealtH
Дата 7.10.2004, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 7.10.2004, 09:50)
Цитата(StealtH @ 6.10.2004, )
Но тогда при этом, снизится скорость работы скрипта.

Ну, как ты можешь сам догадаться, нельзя одновременно кушать рыбу и карабкаться на дерево... wink.gif Нужно искать золотую середину...

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

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

Да и еще чуть не забыл, ресурсы не важно, но только вот чтоб траблов с доступом к ним не было в связи с тем, что запускаться скрипт будет не от рута, это тоже не мало важный ньюанс.

Это сообщение отредактировал(а) StealtH - 7.10.2004, 13:02
PM MAIL   Вверх
GoodBoy
Дата 7.10.2004, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Цитата(StealtH @ 7.10.2004, 14:00)
Вообщем смысл такой, сервак от количества процессов загнуться не должен(я так думаю), но самое главное точность и скорость, это основной принцип работы скрипта.

тогда запусти 64 процесса, и каждый из них пусть обработает по 4 хоста!!!!

Цитата(StealtH @ 7.10.2004, 14:00)
подкинь ссылочку, если таковая имеется, на ресурс, где можно почитать про разделение памяти между процессами

Сорри, не знаю...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
StealtH
Дата 7.10.2004, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.9.2004

Репутация: нет
Всего: нет



Цитата(GoodBoy @ 7.10.2004, 13:03)
тогда запусти 64 процесса, и каждый из них пусть обработает по 4 хоста!!!!

Ты наверное не понял сути вопроса, мне нужно именно пинг запустить в таком количестве экземпляров, результаты пинга складываются в файлик, а потом сканить порты на запущенные серивы, тоже в несколько потоков. В итоге сервак надрывается меньше минуты и сразу выдает результат.

Код

...............
$hostmask='192.168.1.';
for(my $i=0; $i<=255;$i++){
 $host=$hostmask."$i";
 `ping -с 4 -q $host >./out/$host`;
}
sleep(300000);# к примеру, подождать пока пинг пройдет
my @dir=`ls out`;

for (my $i=0; $i<=$#dir; $i++){
 open(FILE, "$dir[$i]");
 @line=<FILE>;
 close(FILE);
...................
 for (my $i=0; $i<=$#liner; $i++){
   if(is_live($line[$i])){
    ...................
     }else {&нет мату;}

}
sub is_live
{
  my @data=shift;
.....................
#обрабатываем результат пинга
if(живой){return 1;}
else{return 0;}
}

..........................


Я почему так решил, потому-что обработать 200kb(при самом боьшом количестве хостов) гораздо проще и менее ресурсоемко, чем делать это все в каком-то цикле(сначала пинговать, а потом обрабатывать результат) дольше по времени и неизвестно как себя может повести скрипт при каких-либо ошибках(я имею ввиду какую-нить непредвиденную ситуевину, всего ведь не предусмотришь). Системного пинга в чем плюс, в том, что он выводит именно те результаты, которые есть на самом деле, а перловый пинг меня чо-то разочаровал(результаты в 3-4 раза больше чем от системного). Тем более что скрипт будет запускаться кроном и контролировать его работу будет довольно-таки сложно, а в логах его работы потом ковыряться мне особо эта перспектива не прильщает(долго и скучно).

Цитата
Сорри, не знаю...

Ну тады Яndex - найдется ф-ф-ф-ф-се smile.gif
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.