Сделайте так, чтобы сокат записывал в (TCP или UNIX) сокет построчно для сбора логов - PullRequest
3 голосов
/ 14 июня 2011

Я пытаюсь объединить несколько файлов журнала с нескольких хостов.Я делаю socat -u EXEC:'follow_log_cmd' UNIX-SENDTO:/tmp/socket для каждого журнала, за которым я хочу следовать.

На машине сбора журналов я делаю socat -u UNIX-RECV:/tmp/socket -

Моя проблема в том, что иногда записи в журналах перекрываютсяпотому что socat пишет не одну строку за раз, а вместо этого буфер за раз.

Есть ли способ заставить его писать одну строку за раз?

1 Ответ

3 голосов
/ 14 июня 2011

Попробуйте использовать псевдотерминал для буферизации строки письма socat:

- socat -u EXEC:'follow_log_cmd' UNIX-SENDTO:/tmp/socket
+ socat -u EXEC:'follow_log_cmd',pty,ctty UNIX-SENDTO:/tmp/socket

См. Также: https://stackoverflow.com/questions/1000674/turn-off-buffering-in-pipe

...