![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Добрый день!
В директории 20 скриптов Perl, их нужно последовательно запускать. Я написал скрипт-пускач, который будет запускать остальные скрипты (кроме себя) в многопоточном режиме.
Проблема в следующем. Все скрипты выдают какую-то информацию в консоль. И сейчас в консоли "пускача" отображается какая-то белиберда - запускаемые скрипты пишут свою информацию внахлест. Подскажите, можно ли отредактировать пускач таким образом, чтобы он только показывал названия запущенных скриптов и не выводил при этом информацию, которую пишут в консоль эти запускаемые скрипты? |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Можно.
|
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Как?
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
переведи вывод в файл
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
STDOUT, что-ли?
Ну, я добавил:
Теперь вместо консоли пишет в файл. Но мне нужно, чтобы пускач писал в консоли, какие именно скрипты он запустил. Это сообщение отредактировал(а) Suppir - 25.3.2014, 11:43 |
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
-------------------- менеджер по кодеврайтингу |
||||
|
|||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Куда это прописать?
Менять вывод всех 20 скриптов нет возможности. Нужно именно в пуске все прописать. |
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Suppir, считается, что
вот этот print и делает то, что тебе нужно. Но делает ли он это или нет у тебя - не знаю! Добавлено через 9 минут и 5 секунд Попробуй закомментировать строку
и посмотри что будет писаться в консоли. -------------------- менеджер по кодеврайтингу |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
Это сообщение отредактировал(а) Romikgy - 25.3.2014, 12:50 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Suppir |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Romikgy,
из нескольких потоков не может писать в один log.txt, т.к. "файл заблокирован другим процессом". Добавлено @ 12:56
Я закомментировал строку и получается следующее: 1) не пишется название запущенных скриптов; 2) выводится в консоль та информация, которую выдают запущенные скрипты. И мне нужно ровно наоборот - чтобы информация от скриптов (что, что в скриптах прописано через Print) не выводилась в консоль и чтобы отображались названия запущенных скриптов. Это сообщение отредактировал(а) Suppir - 25.3.2014, 12:57 |
||||||
|
|||||||
| Bulat |
|
||||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
или ты сделал не то, что я тебе написал, или ты врешь!
запускает твои скрипты - если ты эту строку закомментировал(а не что-то другое), то у тебя скрипты вообще не должны были бы запускаться! Добавлено через 1 минуту и 43 секунды а если
?? -------------------- менеджер по кодеврайтингу |
||||||
|
|||||||
| Suppir |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Bulat, я закомментировал строки
Сейчас скрипт выглядит так:
Он работает неправильно: в консоль перенаправляется вывод со всех скриптов (вперемешку), а названия запущенных скриптов не отображаются. Добавлено через 1 минуту Понятно, что если закомментировать
, то ни один скрипт вообще не запустится. Добавлено через 2 минуты и 58 секунд Ну, получится 20-лог файлов с именами скриптов. Но дело в том, что и сейчас эти 20 скриптов создают 20-лог файлов с различной информацией. Зачем мне еще что-то писать. Нужно только запускать параллельно эти 20 скриптов и выводить в консоль, какие скрипты запущены - вот и все. |
||||||
|
|||||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Suppir, вообще-то я тебе писал совсем другое, но по закону Мерфи...
Так можно проверить вывод в консоль названия запускаемых скриптов, Если оное происходит - значит то, что ты хочешь уже делается! Нужно лишь маленько изменить сам запуск скриптов! Это сообщение отредактировал(а) Bulat - 25.3.2014, 13:13 -------------------- менеджер по кодеврайтингу |
|||
|
||||
| Suppir |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Bulat,
если оставить строчку
то в консоль выводятся названия скриптов. Это правильно. Проблема в другом. Если мы запустим скрипты строчкой
то эти скрипты начинают наперебой писать свою информацию в консоль пускача. То есть запускаемые потоки передают свой STDOUT в консоль пускача. Переделывать все скрипты нет возможности. Нужно отредактировать пускач таким образом, чтобы он отображал только названия запускаемых скриптов и не выводит их STDOUT в свою консоль. |
||||
|
|||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
если ось юниксовая, то попробуй
P.S. я больше предпочитаю форки, но вроде как и с тредами должно работать! -------------------- менеджер по кодеврайтингу |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Нет, виндовс стоит.
Еще есть такой вариант. Чтобы скрипт пускач запускал скрипты Perl в отдельных окнах. И пусть они там себе в консоль выводят, что хотят. Такой вариант возможен? |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Если виндовс, то делай
самое оптимальное решение, которое не принесет за собой другие проблемы! -------------------- менеджер по кодеврайтингу |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
К сожалению, не оптимальное. Каждый скрипт выдает log-файл. А теперь он еще и создает лишние txt-файлы.
Разве что стирать потом эти файлы в конце работы скрипта... Добавлено через 3 минуты и 45 секунд Короче, изменил код на следующий:
В файлы $item.temp пишется вывод STDOUT скриптов, а в конце скрипта пускач подчищает за собой эти темповые файлы. |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Ок. Если придумаешь надежное решение под виндовс по твоим требованиям - меня в соавторы! -------------------- менеджер по кодеврайтингу |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Договорились
|
|||
|
||||
| tzirechnoy |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Например,
|
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
А почему вывод перенаправляется с созданием нового файла? Может system($item." >> out.temp"), такой вариант не будет под windows блочить файл? А вообще действительно нехватает /dev/null
Еще можно вместо system использовать `` (qx//). Тут вывод в консоль не должен попадать. Это сообщение отредактировал(а) alezzz - 25.3.2014, 19:28 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
||||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
А может быть кто знает, как изящней вот это написать?
то есть получить имя скрипта без его пути. Например: c:/программы/test.pl - нужно получить "test.pl". |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Suppir, сдается мне, что это строчка под юникс писалась!
А если попробовать исправить вот так:
-------------------- менеджер по кодеврайтингу |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Да нет, все под Windows написано и работает.
Я думал, может есть какая волшебная переменная для получения названия скрипта без его пути. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Никак. Написать это изящно -- невозможно. И не потому, что регэкспы сложные или модулей нет, а потому, что пытаться отфильтровать себя по имени -- это само посебе кривость и плохо сказывается на переносимости. Это в общем мне интуитивно-очевидно, но и так я за пять минут наткнулся на три нюанса: другие слэшы в linux, необходимость под linux запускать ./subscript.pl по причине отсутствие . в $PATH, привычка запускать perl runner.pl, которая тожэ привела к поломке. Правильнее -- создать поддиректорию, куда положыть либо сам запускающий скрипт, либо наоборот тех, кого нужно выполнить. |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
у меня на linux $0 - дает как раз название скрипта без пути, как оно работает под виндовс - не знаю, под рукой нету! -------------------- менеджер по кодеврайтингу |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
( split "[\\\\/]", $0 )[-1];
|
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
у меня на linux $0 - дает как раз название скрипта без пути, как оно работает под виндовс - не знаю, под рукой нету!
Windows дает полный путь по $0. Добавлено через 1 минуту и 28 секунд другие слэшы в linux, С этими сдешами беда. Я пишу одновременно на c#, perl и AutoIt. Везде приходится по-разному писать Добавлено через 1 минуту и 47 секунд arto, шутку юмора заценил Добавлено через 3 минуты и 32 секунды В общем, я попробовал позапускать скрипты в многопоточном режиме. На двухядерном процессоре E7300 преимущество в 1,5 - 2 раза по сравнению с последовательным запуском. Думаю, что на i5 или i7 преимущество будет в 3 - 4 и более раз. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |