The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Параллельное исполнение в bash, Аноним (0), 08-Окт-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


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 
> Ну вот же вы утверждаете, что нельзя узнать пид, если он не
> был сохранен в файл самим процессом. Кто-то может перенять заблуждение.
> Прочитайте документацию по башу. Будете знать и как пид запущенного процесса получить,
> и как параллельно процессы запускать.

Так это было указание на очевиднейшую безграмотность, я не пытался ничему учить. Но, раз настаиваете… Если сейчас покажете, как получить идентификатор потомка дочернего процесса (чтобы тому можно было отправить сигнал, например), я признаю, что часами долбился в глазки, вместо того, чтобы больше экспериментировать и найти всё-таки подходящий способ. Поскольку единственное решение, найденное мной, заключается в убийстве себя, и тогда все потомки, включая деток и внучек, отправляются на тот свет вместе с нами достаточно быстро, но только в случае, если те ещё не успели разбежаться во все стороны (потому что тогда они уже успешно демонизируются и сделать с ними ничего не получится, а сигналы они замечательно проигнорируют в одном случае из 10). И упомянутая мной запись всех айди в файл и управление ими из мейна тоже не самый универсальный метод -- если sigint прийдёт не вовремя, программа в лучшем случае устроит что-то в духе rm -rf *, а дочерним процессам прилетят случайные сигналы (или не прилетят вовсе, если те уже перестали быть дочерними). В противном случае, дверь вон в той стороне, выйдите вон, и по возможности больше не отвечайте на вопросы, в которых ни черта не смыслите, или хотя бы не делайте вид, что в чём-то разбираетесь. Спасибо.

Ответить | Правка | Наверх | Cообщить модератору

22. "Параллельное исполнение в bash"  +/
Сообщение от Аноним (1), 09-Окт-20, 21:56 
Пиды процессов внуков только через системные утилиты, работающие с процессами.
Либо вы шлете сигнал дочке, а она его обрабатывает, делая что-то с внуками. Но проще так не делать и перепроектировать логику.

Скрипт, который будет делать то, что вам надо, это примерно строк 10, может быть 20. В нем будут такие вещи, как for in, nproc, &, wait, возможно $!, trap. Отлично гуглятся все вопросы, которые могут возникнуть при написании. Во всяком случае, по-английски все документировано и разжевано.

Вам принципиально, чтобы какой-то русскоязычный васёк за вас скрипт написал? Фетиш какой-то? Уже два дня побираетесь, можно было уже пару раз перечитать доку по башу вдоль и поперек.

Ответить | Правка | Наверх | Cообщить модератору

23. "Параллельное исполнение в bash"  +/
Сообщение от Аноним (0), 09-Окт-20, 22:32 
Проблема в том, что "системные утилиты, работающие с процессами", не могут предоставить информации, не имеющейся у ядра. А сканирование всех процессов на предмет ближайшего предка (если он ещё не потерян!) -- это не самое лучшее решение, подверженное всё той же гонке и случайным плавающим багам. Все мои попытки передавать сигнал по цепочке завершились тем, что в одном случае из десяти (или ста), процессы их игнорировали и успешно демонизировались. Перепроектировать логику не получится. Если тот же sleep запущен, он будет продолжать висеть под инитом, пока его не убьют, или он не закончится сам.

Вопрос был как организовать и перенаправить вывод в удобоваримом виде, а не как запустить несколько процессов параллельно. Вопрос, как принудительно завершать потомков при (внезапном) завершении мейна мы не рассматриваем, очевидно, что адекватного решения для него в интернете просто нет.

Ответить | Правка | Наверх | Cообщить модератору

25. "Параллельное исполнение в bash"  +/
Сообщение от Аноним (1), 12-Окт-20, 18:42 
Выдумываете себе проблемы, чтобы потом героически их превозмогать. Сраному скрипту в кроне - нужны данные о процессах уровня ядра! Линукс Торвальдс должен срочно сделать новые апи, чтобы вы смоги решить свои задачи...

Вам нужно запустить какие-то джобы в параллель и обработать их ошибки, если что-то пошло не так. Для этого не нужно никакого IPC при условии правильного проектирования.
Если не можете придумать, как это сделать без абсурдных переусложнений - наймите системного администратора.

Ответить | Правка | Наверх | Cообщить модератору

26. "Параллельное исполнение в bash"  +/
Сообщение от Аноним (0), 12-Окт-20, 19:19 
Там задача была ждать данные в основном потоке и накапливать, валидировать, и сбрасывать на диск каждые N времени в дополнительном фоновом основываясь на ряде условий. Какой ещё крон? Использовать тут крон это напрашиваться на проблемы -- при убийстве скрипта некому будет его отключить. Полагаю, ваши скрипты очень грязные.

Но это не имеет никакого отношения к текущей проблеме. Сейчас меня интересует организация красивого вывода с индикацией работы скрипта (без ncurses). Простое "решение" у меня и так есть, это find . -name "*" -print0 | xargs -0 -n 1 -P "$(nproc)" -I '{}' script '{}' однако вывод превращаеся в мешанину. "Классическое" решение это отключить вывод, но меня оно не устраивает.

Ответить | Правка | Наверх | Cообщить модератору

9. "Параллельное исполнение в bash"  +1 +/
Сообщение от Аноним (-), 08-Окт-20, 22:43 

> Если не хотите все это изучать - наймите того, кто уже это
> сделал.

Вот этого нельзя допустить !

Держи друг Аноним
https://github.com/dustinblackman/tcon

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

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

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




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

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