Как я могу совместно использовать stdout между несколькими процессами?

Я хочу получать поток в реальном времени TCP и сделать его доступным для чтения другими процессами одновременно, не сохраняя его.

Например, 111.222.233.244:1234 потоков фактическое время. Сервер поддерживает только одно соединение.

tty1:

$ nc 111.222.233.244 1234 | (do something here) /tmp/tcpstream & $ sleep 5 # stream is received even if there is no process that reads it $ cat /tmp/tcpstream # it can also be like `(some command) | cat -` 17:00:06 17:00:07 17:00:08 17:00:09 17:00:10 17:00:11 

TTY2 (вторая cat выполняется через 9 секунд после выполнения nc ):

 $ cat /tmp/tcpstream 17:00:09 17:00:10 17:00:11 

2 Solutions collect form web for “Как я могу совместно использовать stdout между несколькими процессами?”

Возможно, инструмент tcpclone может вам помочь. Он прослушивает входящие соединения на определенном порту, и любые данные, считанные со стандартного ввода, перенаправляются на эти соединения.

Затем ваш пример должен выглядеть примерно так:

 $ nc 111.222.233.244 1234 | ./tcpclone 5555 & $ nc 127.0.0.1 5555 

Я не уверен, что полностью понимаю вашу проблему, но как насчет:

 $ nc 111.222.233.244 1234 \ | tee -a /tmp/stream.dump \ | while ! do_something_here; do : ; done 

Помимо очевидного сброса потока в файл с tee (добавление, поскольку сеть может быть отключена по разным причинам, и вы, возможно, не обязательно хотите перезаписать часть превизии потока), это будет respawn do_somehing_here если оно не выйдет должным образом. Следовательно, если do_somehing_here – это, например, скрипт-оболочка, вы можете убить все, что он на самом деле вызывает, что приводит к тому, что скрипт выходит из строя ненормально и немедленно возвращается обратно. Если вы отредактируете скрипт перед его убийством, обработка потока может быть изменена без повторного подключения.

  • Какой процесс прослушивает порт?
  • Сиротские соединения в состоянии CLOSE_WAIT
  • Как прекратить TCP-соединение, установленное самим bash?
  • Захват данных с Fluke 1620a через netcat
  • Доступна реализация TCP Westwood?
  • Linux fedora - пакет httpd и маршрутизатор, как заставить его работать?
  • Неверная сборка пакетов для правила dnat с использованием iptables
  • Попытка открыть порт с помощью CentOS
  • Используя tc, я хочу, чтобы TCP и UDP использовали один и тот же буфер
  • Отбросить пакеты TCP и предотвратить повторную передачу TCP
  • что такое спецификация формата для `ss -D`?
  • Команда Solaris для остановки прослушивания в порту
  • Linux и Unix - лучшая ОС в мире.