Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > *NIX системы: Общие вопросы > bash запуск несколько процессы дождаться всех |
Автор: DukeCpp 2.5.2009, 22:33 | ||||
Уважаемые участники форума, здравствуйте! собственно, сабж; Искал по форуму по указанным ключевым словам; найти ответов, к сожалению, не удалось. Господа, обращаюсь к вам. хочу написать скрипт на баше, который будет запускать несколько процессов одновременно, а по окончании последнего из запущенных (не раньше!) продолжить делать действия. сейчас это делается в два скрипта: runApps.sh:
они делают вычисления, в процессе которых пишут файлы. Когда всё отработало, я запускаю файл что-то типа:
Это упрощённая схема: окончание каждого запущенного myApp зависит от внешних факторов, поэтому тот процесс, который был запущен ранее, хоть на 2 дня, может завершиться последним, и его тоже надо дождаться, прежде чем процессить ProcessedDataResults.txt Вопрос: Как избежать ручной работы и самостоятельного мониторинга процессов и возложить всё это на bash? Заране благодарен за содействие! |
Автор: powerfox 3.5.2009, 00:10 | ||
|
Автор: Vaulter 3.5.2009, 00:13 | ||
погрешность в секунду определения живости по PID:
конечно, тут следует расширить этот скрипт для нескольких пидов... проверочка будет просто погуще ![]() зы: код только отчасти мой, кусать не сильно |
Автор: nickless 3.5.2009, 00:24 | ||
Добавлено через 2 минуты и 15 секунд Хех, когда вы успели ![]() |
Автор: DukeCpp 3.5.2009, 15:48 | ||||
вот это да![]() powerfox, да-с, всё гениальное просто. Расширить циклом уже смогу;) Благодарю! Vaulter,
это, как я понимаю причина погрешности в секунду? То есть дату процессить начнём с самым большим опозданием в секунду после заврешнеия последнего, так? Ну, на самом деле, погрешность чисто символическая, если учесть, что процессы выполняются от десятков минут. Спасибо за просто готовый ответ! nickless Да! Большое спасибо-с! Именно.
я так понял, что оно собирает PID-ы всех запущенных этим скриптом процессов? А wait ждёт всех процессов, которые были "даны свыше"? bilbobagginz Великоблагодарю за столь исчерпывающий ответ. В мемориз, однозначно; когда подойду к задаче более сложной диспетчирезации и расрпределения задач, обязательно взгляну lsf и PBS. Пока что совершенно удовлетворён предложенными решениями на bash/Perl, ну а после -- condor, как-то подружественнее показался ![]() Вопрос помечаю решённым. Товарищи, Благодарю! |
Автор: bilbobagginz 3.5.2009, 16:40 |
это всё на баше, просто пока нет синтаксис-подсветки для баша, юзаю перловую подсветку. кондор однозначно рекомендую: на изучения нужно всего 1-2 часика. очень прост, и его элементарно можно настроить в любой лаборатории, заюзав этим все ресурсы. (там только надо чтобы сеть была настроена корректно: dns (direct/reverse), time, желательно иметь какой-то единый юзеровый домен - ldap/nis) конечно если лень прогу править почаще, то лучше всё запускать на 1-м компе, и говорить своему ректору "запустил, пока бежит, когда будут новости - сообщу". но если жалко времени жизни, то подход меняется ![]() |
Автор: nickless 4.5.2009, 18:21 | ||
Нет, jobs просто выводит список на процессов работающих на данный момент в бэкграунде, а wait без параметров ждёт завершения всех процессов запущеных прежде из этого шелла. Если из того же скрипта не запускаются другие процессы, которых ждать не надо, то этого вполне достаточно. |