![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
DukeCpp |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 27.2.2006 Где: St.Petersburg Репутация: нет Всего: 1 |
Уважаемые участники форума, здравствуйте!
собственно, сабж; Искал по форуму по указанным ключевым словам; найти ответов, к сожалению, не удалось. Господа, обращаюсь к вам. хочу написать скрипт на баше, который будет запускать несколько процессов одновременно, а по окончании последнего из запущенных (не раньше!) продолжить делать действия. сейчас это делается в два скрипта: runApps.sh:
они делают вычисления, в процессе которых пишут файлы. Когда всё отработало, я запускаю файл что-то типа:
Это упрощённая схема: окончание каждого запущенного myApp зависит от внешних факторов, поэтому тот процесс, который был запущен ранее, хоть на 2 дня, может завершиться последним, и его тоже надо дождаться, прежде чем процессить ProcessedDataResults.txt Вопрос: Как избежать ручной работы и самостоятельного мониторинга процессов и возложить всё это на bash? Заране благодарен за содействие! Это сообщение отредактировал(а) DukeCpp - 2.5.2009, 22:36 |
||||
|
|||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
|
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 3 Всего: 22 |
погрешность в секунду определения живости по PID:
конечно, тут следует расширить этот скрипт для нескольких пидов... проверочка будет просто погуще ![]() зы: код только отчасти мой, кусать не сильно |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 41 Всего: 181 |
Добавлено через 2 минуты и 15 секунд Хех, когда вы успели ![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
bilbobagginz |
|
||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
DukeCpp, в принципе кончено в bash существует команда wait.
т.е. в главном скрипте запускаешь свои джобы, и собираешь их pidы.: допустим у тебя есть скрипты вычислений. calc[1...N].sh, N=10 делаешь:
воть, однако это всё очень ограничено, и не берёт в счёт различные комбинации, а также ограничено на 1 компьютер (ну не совсем, но всё же)
для того, что вы делаете существуют специальные пакеты ПО. это называется job scheduling management. я знаю точно, что такую задачу смогут сделать""лично знаком" только с первым вариантом, но он очень удобен (по-моему), и хорошо работает на нескольких системах (linux, windows, solaris, mac, freebsd, и более ), и позволит тебе заюзать все "свободные" компы, напр. минут 20 после того, как они не использовались локально. тебя интересует конфигурация DAG (т.е. directed acyclic graph). такая конфигурация позволяет запустить несколько зависимых групп независимых подзадач. вот мануал основной: http://www.cs.wisc.edu/condor/manual/v7.2/ (скачай сам пакет, потом пройдись по установке, и фокусируйся на user manual) вот еще ссылки на самоучитель: http://homepages.nesc.ac.uk/~gcw/NGS/Condor.html http://homepages.nesc.ac.uk/~gcw/NGS/Condor2.html Люди пользовавшиеся LSF свидетельствуют о том, что эта система "лучше" чем кондор, но с ней могут быть проблемы с лицензией, т.к. это чисто коммерческий продукт. Лучше она в том, что кондор работает по принципу оппортунизма, а LSF гибче и может работать как с оппортунистическими ресурсами, так и со специально выделенными. удачи. Это сообщение отредактировал(а) bilbobagginz - 3.5.2009, 08:03 -------------------- Я ещё не демон. Я только учусь. |
||||
|
|||||
DukeCpp |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 27.2.2006 Где: St.Petersburg Репутация: нет Всего: 1 |
вот это да
![]() powerfox, да-с, всё гениальное просто. Расширить циклом уже смогу;) Благодарю! Vaulter,
это, как я понимаю причина погрешности в секунду? То есть дату процессить начнём с самым большим опозданием в секунду после заврешнеия последнего, так? Ну, на самом деле, погрешность чисто символическая, если учесть, что процессы выполняются от десятков минут. Спасибо за просто готовый ответ! nickless Да! Большое спасибо-с! Именно.
я так понял, что оно собирает PID-ы всех запущенных этим скриптом процессов? А wait ждёт всех процессов, которые были "даны свыше"? bilbobagginz Великоблагодарю за столь исчерпывающий ответ. В мемориз, однозначно; когда подойду к задаче более сложной диспетчирезации и расрпределения задач, обязательно взгляну lsf и PBS. Пока что совершенно удовлетворён предложенными решениями на bash/Perl, ну а после -- condor, как-то подружественнее показался ![]() Вопрос помечаю решённым. Товарищи, Благодарю! Это сообщение отредактировал(а) DukeCpp - 3.5.2009, 15:49 |
||||
|
|||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
это всё на баше, просто пока нет синтаксис-подсветки для баша, юзаю перловую подсветку. кондор однозначно рекомендую: на изучения нужно всего 1-2 часика. очень прост, и его элементарно можно настроить в любой лаборатории, заюзав этим все ресурсы. (там только надо чтобы сеть была настроена корректно: dns (direct/reverse), time, желательно иметь какой-то единый юзеровый домен - ldap/nis) конечно если лень прогу править почаще, то лучше всё запускать на 1-м компе, и говорить своему ректору "запустил, пока бежит, когда будут новости - сообщу". но если жалко времени жизни, то подход меняется ![]() -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 41 Всего: 181 |
Нет, jobs просто выводит список на процессов работающих на данный момент в бэкграунде, а wait без параметров ждёт завершения всех процессов запущеных прежде из этого шелла. Если из того же скрипта не запускаются другие процессы, которых ждать не надо, то этого вполне достаточно. -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |