Как стать автором
Обновить

Комментарии 9

ИМХО, но если необходима многозадачность, то лучше взять нормальный язык программирования и написать логику на нем. В баше это реализовано ужасно и любой скрипт на 200+ строк и многопоточностью будет нечитаемой кучей кода. (Это не относится к xargs -P или parallel). Контроль кодов выхода, синхронизация потоков, доступ к общим данным. Конечно все это можно заколхозить на баше, но как сисадмин, я надеюсь, что мне не достанется такой подарок на поддержку.
Соглашусь. Мелкие задачки, как правило, не требуют распараллеливания, а для сложных уже нужен более серьёзный инструмент.

Хм… Моя нужда в многозадачности на баше пока примерно исчерпывается однострочниками вида
( команда_1 & команда_2 & wait )


(пинговал в параллель роутер и провайдера, чтобы вывод в одну консоль шёл и по Ctrl-C все джобы остановились. Из забавного – в сети для такой простой задачи предлагался ужОс с trap).

fping решит эту задачу без привлечения баш-фу.

Спасибо, не знал про него. brew install fping поехал :-)
(заодно узнал про корявку в zsh: сразу после установки консольной утилиты – он не подтягивает autocomplete для неё, надо или запускать новый zsh, или звать rehash)


Но, тем не менее, подобные однострочники могут пригодиться, и по моим меркам это ещё не bash-fu, запутаться в них сложно.

Хм, даже тема `wait’ не раскрыта, не говоря уж о настоящих развлечениях…
Что, по вашему мнению, нужно было написать про wait для раскрытия темы?
Хм, не, ну Вас вредный бесполезный не шибко полезный `jobs' жирным шрифтом и в начале, а `wait', типа, мимо проходил.

Если в деле чистого POSIX, то хотя бы за аргументы слово замолвить, как и за код возврата, а в деле ужасных башизмов, то и за ключи полезные.
j1&
p1=$!
j2&
wait $p1
echo Job 1 exited with status $?
wait $!
echo Job 2 exited with status $?


За псевдопеременную `$!' вообще ни полслова, как и за вопросы синхронизации…
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/wait.html
jobs в скрипте используется для того, чтобы контролировать сколько фоновых заданий выполняется в настоящий момент, не такой уж бесполезный. Абзац про wait начинается с «обратите внимание». Но, согласен, wait стоило добавить к списку используемых команд.
Статья предполагалась как туториал по конкретному приему. Не сомневаюсь, что вы можете лучше и интереснее, напишите.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории