Как отправить именованный канал всем подключенным клиентам (Bash)

У меня есть именованный канал, на который я выводю информацию журнала из нескольких скриптов. Мне нужно создать TCP-сервер, который отправляет эту информацию подключенным клиентам. Для одного клиентского решения это сработало нормально:

tail -f name_of_pipe | nc -lk $tcp_port

Есть ли эффективный способ отправить контент нескольким клиентам? Я думаю, что netcat не поддерживает несколько клиентов. Я обнаружил, что есть утилита tcpserver от ucspi-tcp, которая выполняет новый процесс для каждого клиента, но это не будет делать то, что я хочу - каждая строка будет считана из именованного канала и доставлена ​​только одному случайному клиенту.

Фактически, мне не нужен именованный канал, работающий как FIFO, я могу выбросить все до того, как клиент подключится, и отправлять только данные в реальном времени.


person Jirka RCK    schedule 13.06.2017    source источник
comment
А что насчет tee?   -  person mauro    schedule 13.06.2017


Ответы (1)


Что-то вроде этого?

$ echo "Bye bye" | tee >( cat ) | tee >( cat ) | cat
Bye bye
Bye bye
Bye bye
Bye bye
person mauro    schedule 13.06.2017
comment
tee может записывать в несколько файлов: echo "Bye bye" | tee >( cat ) >( cat ) | cat. (Вам не понадобился бы конечный cat, если бы это был фактический процесс, но я предполагаю, что это заполнитель для произвольного потребителя). - person chepner; 13.06.2017