nethogs - это инструмент для мониторинга пропускной способности процесса Linux. https://github.com/raboof/nethogs
nethogs -t
его вывод выглядит так.
Refreshing:
sshd: root@pts/0/4002/0 0.185156 0.0773437
unknown TCP/0/0 0 0
Refreshing:
sshd: root@pts/0/4002/0 0.220703 0.0902344
unknown TCP/0/0 0 0
Refreshing:
sshd: root@pts/0/4002/0 0.217578 0.0902344
unknown TCP/0/0 0 0
Я пытаюсь разобрать это с помощью awk.
nethogs -t | awk {'print $0}'
не возвращает никаких результатов :-(
nethogs -t | awk {'readline tmp; print tmp}'
почти такой же ;
Я предполагаю, что это способ, которым nethogs буферизует свой вывод или какой-то другой причудливый способ его вывода.
nethogs -t | awk -W interactive '{print $2}'
я получаю некоторую информацию, но она работает не так, как ожидалось.
Я пробовал играть с настройками RS и FS в awk, но не повезло.
Я попытался воспроизвести проблему, но не смог, по крайней мере, не в терминале (в моем случае awk
напечатал строки, как ожидалось), так что это только предположение.
Вы можете попытаться избежать буферизации, прочитав вывод строки за строкой из оболочки следующим образом:
while read line; do
# Do some real processing here
# instead of the echo
echo "-> $line"
done < <(nethogs -t)
Я не знаком с nethogs, но я проверю это. Одна идея, попробуйте перенаправить sterr на стандартный вывод вот так.
nethogs -t 2>&1 | awk {'print $0}'