Назад | Перейти на главную страницу

nethogs -t | awk '{print $ 0}' ничего не выводит

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}'