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