Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: bash распаралеливание процессов  (Прочитано 714 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Attid

  • Автор темы
  • Участник
  • *
  • Сообщений: 177
    • Просмотр профиля
bash распаралеливание процессов
« : 03 Августа 2016, 10:49:05 »
добрый день.
есть необходимость запустить 3 процесса, и когда они все 3 выполнятся, то запустить следующий.

т.е. примерно следующее

wget ya.ru &
wget www.ru &
wget ubunt.ru &

rem тут запустить что-то что подождет завершение всех процессов

cp * /tmp

вот что запустить в промежутке ?

Axa-Ru

  • Гость
Re: bash распаралеливание процессов
« Ответ #1 : 03 Августа 2016, 12:28:01 »
Себе дороже.
Только всякими финтами и выйдет себе дороже.
Если есть желание, проверяйте в цикле процессы с помощью pgrep.

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

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: bash распаралеливание процессов
« Ответ #2 : 03 Августа 2016, 12:43:18 »
Attid, Axa-Ru, зачем процессы? Есть прекрасные flock. И проверять на наличие этих самых файлов
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Attid

  • Автор темы
  • Участник
  • *
  • Сообщений: 177
    • Просмотр профиля
Re: bash распаралеливание процессов
« Ответ #3 : 03 Августа 2016, 16:29:03 »
EvangelionDeath, что-то не пойму как сделать флок на 3 процесса. можешь пример набросать ?

Пользователь добавил сообщение 03 Августа 2016, 17:10:55:
оказалось их можно последовательно писать, вышло вот так
echo

flock 51 ./test.sh&
flock 52 ./test1.sh&
flock 53 ./test2.sh&

sleep 5

flock 51 flock 52 flock 53 echo all done
« Последнее редактирование: 03 Августа 2016, 17:10:55 от Attid »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: bash распаралеливание процессов
« Ответ #4 : 03 Августа 2016, 23:05:28 »
Сложно то как…
Код: (bash) [Выделить]
{
    wget ya.ru &
    wget www.ru &
    wget ubunt.ru
}

cp * /tmp
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.029 секунд. Запросов: 26.