bash fetch stdout/stderr многопроцессорного процесса Python

У меня есть какая-то многоагентная система, работающая локально на Python с использованием ZeroMQ. Мастер запускается как основной поток (python Admin.py), а этот запускает рабочие агенты как multiprocessing.Process подпроцессы.

И Admin.py, и рабочие процессы записывают выходные данные с помощью простых команд print. Теперь я пытаюсь получить все данные, которые я вижу на своей консоли: $ python Admin.py > file.txt. Но этот оператор извлекает только вывод, написанный Admin.py. Я пробовал различные перенаправления, такие как передача sterr в стандартный вывод, а затем выборка стандартного вывода (1>&2 > file.txt), но безрезультатно. Этот вопрос задавался в различных формах на Satckoverflow (здесь и здесь), и ответы, похоже, включают довольно некоторое дополнительное кодирование Python. Есть ли решение этой проблемы в Bash? Я вижу весь вывод на своей консоли, так почему же Bash не может перенаправить его в файл?


person user989762    schedule 11.11.2014    source источник
comment
Разве это не 2>&1 > file.txt ?   -  person Serge Ballesta    schedule 11.11.2014
comment
@SergeBallesta или еще лучше > file.out 2>&1. Порядок имеет значение при переадресации. Ваш пример 1) перенаправляет stderr в то же место, куда в данный момент идет stdout, затем 2) перенаправляет stdout (но не stderr) в другое место...   -  person twalberg    schedule 11.11.2014