![]() |
Пред. тема | След. тема | ||
Форум Программирование под UNIX (Shell скрипты) | |||
---|---|---|---|
Изначальное сообщение | [ Отслеживать ] |
"Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 19:15 | ||
С год назад хотел организовать параллельное исполнение, но что-то не вышло, и я оставил всё на одном ядре. Очень медленно. Как лучше его сделать? Хотя бы без синхронизации (синхронизация фоновых жобов развлечение ещё то, не хочу городить грязь, где она не нужна). | ||
Ответить | Правка | Cообщить модератору |
Оглавление |
Сообщения | [Сортировка по времени | RSS] |
1. "Параллельное исполнение в bash" | –3 +/– | ![]() |
Сообщение от Аноним (1), 08-Окт-20, 19:41 | ||
Как лучше сделать? Загуглить решение, очевидно же. Научиться гуглить и читать документацию. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
2. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 19:42 | ||
> Как лучше сделать? Загуглить решение, очевидно же. Научиться гуглить и читать документацию. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
7. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 08-Окт-20, 22:37 | ||
Это проще, чем побираться по форумам. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
10. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 22:45 | ||
> Это проще, чем побираться по форумам. | ||
Ответить | Правка | Наверх | Cообщить модератору |
3. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Licha Morada (ok), 08-Окт-20, 20:55 | ||
> С год назад хотел организовать параллельное исполнение, но что-то не вышло, и | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
4. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 21:10 | ||
Мне нужен раздельный вывод (т.е. табы или разделить одно окно и пулять выхлоп каждого процесса раздельно), мне нужно произвольное число процессов (по числу ядер). Это основное. Если синхронизация только в родительском процессе, нужно контролировать статус фоновых процессов и опционально управлять ими посредством сигналов (достаточно будет получить код завершения, текстовый ipc через фс я уже сделал и тут мне не нужно передавать данные между процессами). Управление фоновыми процессами через job/wait показалось мне очень не надёжным, как пример, после завершения родителя порождённые процессы не спешат умирать и нет никакой возможности узнать их пиды для убийства (я решил этот вопрос, но не совсем так, как хотелось бы), постоянные проблемы с состоянием гонки и синхронизацией (необходимо это учитывать, если где-то в процессе исполнения возникла ошибка). | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
5. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 21:32 | ||
Да, от файлов с выводом, который я буду читать в основном процессе, тоже хотелось бы отказаться в идеале, я правда не представляю как. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
6. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 08-Окт-20, 22:36 | ||
Чтобы такое сделать, вам нужно книжку по шелл-скриптингу прочитать. На самом деле только научиться перенаправлять вывод. Например, ./run > file$x.out & | ||
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору |
![]() | ||
8. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 08-Окт-20, 22:43 | ||
Невозможно узнать идентификаторы потомков потомка, если только они сами не запишут их в какой-нибудь файл. Давайте по существу. И мне нужен выводу в реальном времени, а не после завершения. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
11. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 09-Окт-20, 03:42 | ||
> Невозможно узнать идентификаторы потомков потомка, если только они сами не запишут их | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
12. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 04:13 | ||
Извините, а где я кого-то учил? И из чего можно сделать выводы о моей компетенции? Вот о Вашей уже сложилось определённое мнение на основании ответов в данной теме. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
13. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 09-Окт-20, 11:45 | ||
> Извините, а где я кого-то учил? | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
15. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 19:05 | ||
> Ну вот же вы утверждаете, что нельзя узнать пид, если он не | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
22. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 09-Окт-20, 21:56 | ||
Пиды процессов внуков только через системные утилиты, работающие с процессами. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
23. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 22:32 | ||
Проблема в том, что "системные утилиты, работающие с процессами", не могут предоставить информации, не имеющейся у ядра. А сканирование всех процессов на предмет ближайшего предка (если он ещё не потерян!) -- это не самое лучшее решение, подверженное всё той же гонке и случайным плавающим багам. Все мои попытки передавать сигнал по цепочке завершились тем, что в одном случае из десяти (или ста), процессы их игнорировали и успешно демонизировались. Перепроектировать логику не получится. Если тот же sleep запущен, он будет продолжать висеть под инитом, пока его не убьют, или он не закончится сам. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
25. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (1), 12-Окт-20, 18:42 | ||
Выдумываете себе проблемы, чтобы потом героически их превозмогать. Сраному скрипту в кроне - нужны данные о процессах уровня ядра! Линукс Торвальдс должен срочно сделать новые апи, чтобы вы смоги решить свои задачи... | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
26. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 12-Окт-20, 19:19 | ||
Там задача была ждать данные в основном потоке и накапливать, валидировать, и сбрасывать на диск каждые N времени в дополнительном фоновом основываясь на ряде условий. Какой ещё крон? Использовать тут крон это напрашиваться на проблемы -- при убийстве скрипта некому будет его отключить. Полагаю, ваши скрипты очень грязные. | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
9. "Параллельное исполнение в bash" | +1 +/– | ![]() |
Сообщение от Аноним (-), 08-Окт-20, 22:43 | ||
| ||
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору |
14. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от system (??), 09-Окт-20, 15:33 | ||
> С год назад хотел организовать параллельное исполнение, но что-то не вышло, и | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
16. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 19:16 | ||
Это заявка на победу, я думаю, стоит уже взять parallel в таком случае. Но мне хотелось бы решить это без perl. Я могу всё это сделать красиво в python, там и ipc есть нормальный, и самые разные варианты запускать процессы, но задача обойтись средствами баша. Собственно, в ОП перечислен алгоритм моего питон однострочника запускающего окно и направляющего выводы youtube-dl в него. Там проблема, что он запускался только под conemu, а мне сейчас нужно что-то более универсальное (хотя вариант с konsole готов рассмотреть, хотелось бы переключать на соседний таб с разделением на области, но, полагаю, принудительный запуск дополнительного окна с tmux тоже не плохой вариант). | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
17. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от pavel_simple. (?), 09-Окт-20, 19:23 | ||
> Это заявка на победу, я думаю, стоит уже взять parallel в таком | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
18. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 19:49 | ||
> xargs + screen/tmux | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
19. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 20:06 | ||
В связи с чем вопрос. Можно ли как-то подцепить вывод форка себя (и автоматом всех потомков форка) к шеллу, запущенному в панели tmux? | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
20. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 20:37 | ||
> В связи с чем вопрос. Можно ли как-то подцепить вывод форка себя | ||
Ответить | Правка | Наверх | Cообщить модератору |
![]() | ||
21. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 09-Окт-20, 21:01 | ||
Форк ведь может переопределить дескрипторы для себя? Это никак не должно затрагивать родительский процесс. | ||
Ответить | Правка | Наверх | Cообщить модератору |
24. "Параллельное исполнение в bash" | +/– | ![]() |
Сообщение от Аноним (0), 11-Окт-20, 03:14 | ||
Какая же гадость этот parallel. Он поддерживает вывод в tmux (казалось бы что ещё нужно!) но запускает при этом 100 раз одновременно и ломает вывод консоли. Ещё и наспамила в консоль своим бредом сначала, автор очевидный аутист. | ||
Ответить | Правка | Наверх | Cообщить модератору |
Архив | Удалить |
Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |