The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Question: BASH programming - parallel processes"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Question: BASH programming - parallel processes" 
Сообщение от diver Искать по авторуВ закладки(??) on 11-Апр-05, 21:37  (MSK)
Есть необходимость запустить параллельно две программы из скрипта, причем они должны возвращать код завершения для запуска третьей программы.

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

Существует ли возможность написать это для bash одной строкой?

Я надумал уже что-то, только нет возможности проверить:

1 вариант: (action1&;action2&)&&action3;
2 вариант: ((action1&)&&(action2&))&&action3;

есть какие-то идеи, наработки?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Question: BASH programming - parallel processes" 
Сообщение от madskull Искать по авторуВ закладки(??) on 11-Апр-05, 22:25  (MSK)
Непременно одной строкой?

$ { command1 & pid1=$! ;}; { command2 & pid2=$! ;}; wait $pid1 $pid2

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Question: BASH programming - parallel processes" 
Сообщение от diver Искать по авторуВ закладки(??) on 13-Апр-05, 21:27  (MSK)
Большое спасибо за подсказку!

Программа одной строкой не работает должным образом, но забив ее в файл и перенеся строки, заработало как надо!

============
#!/bin/sh

{
   /home/file1& pid1=$!;
};
{
   /home/file2& pid2=$!;
};

wait $pid1 $pid2;
exec /home/file3;
============

Я проверил, процессы действительно работают параллельно и третья не запустится без окончания их работы.

Вопрос: все-таки, есть ли возможность написать одной строкой?
Насколько я понял, $! - специальная переменная, возвращает pid запущенного приложения. Верно?
Существует ли хороший мануал по bash и программированию в shell на русском.
На сайте www.gnu.org есть отличный мануал, правда он на английском языке...

Спасибо за внимание!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Question: BASH programming - parallel processes" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 13-Апр-05, 23:07  (MSK)
>
>Вопрос: все-таки, есть ли возможность написать одной строкой?

можно, мой пример работает. Внимательно смотри на пробелы.
{ sleep 5 & pid1=$! ;};{ sleep 8 & pid2=$! ;};wait $pid1 $pid2;echo ok
здесь все пробелы нужны.

>Насколько я понял, $! - специальная переменная, возвращает pid запущенного приложения. Верно?
Верно, pid последнего фонового процесса, даже если он уже отработал.

>Существует ли хороший мануал по bash и программированию в shell на русском.
http://gazette.linux.ru.net/rus/articles/index-abs-guide.html

>Спасибо за внимание!
Всегда пожалуйста :)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру