Другая возможность заключается в том, что если вы привыкли уходить от ноутбука с закрытой крышкой, у вас может не получиться настроить linux на сон, или на то, чтобы заснуть за достаточно короткий промежуток времени. Я не беспокоюсь об этом (я просто опустил крышку), так что я не могу сказать вам, как это исправить (задайте более конкретный вопрос, если вы думаете, что это проблема). Windows, OTOH, кажется, засыпает довольно быстро по умолчанию[118119].
Вы можете указать socat
на связь с программой awk
; это заставляет awk
работать в режиме линейной буферизации, и вы получаете немедленные ответы, которые ищете.
Вот командная строка для прослушивания на порту 9000:
socat TCP4-LISTEN:9000 SYSTEM:'/tmp/awk.sh',pty,echo=0
А вот содержимое скрипта /tmp/awk.sh
:
#!/usr/bin/awk -f
#
BEGIN { print "This is the awk socket" }
{ print NR, $0 }
END { print "All done" }
Пример выполнения:
$ nc -vvv otherhost 9000
otherhost [192.168.1.15] 9000 (?) open
This is the awk socket
hello world
1 hello world
how are you
2 how are you
boo
3 boo
^C sent 28, rcvd 61
awk - это печать на стандартной вывод, которая является буферизацией линии, когда он указывает на терминал, и полностью буферизован, если нет; Это означает, что вы должны получить выход после заполнения буфера, т.е. напечатали (например,) 4kb.
Вы можете проверить это, отправив много вывода (например, используя программу Да); исправить вас либо: - stdout nabufer awk (см. Например, https://unix.stackexchange.com/a/25375/63847 ) - Используйте системный вызов отключения (2) от отправителя (уродливый)
Любое лучшее решение приветствуется