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

команда-оболочка для записи использования команды в сети

Есть ли такая команда, как time который может записывать сетевую статистику ввода-вывода процесса и распечатывать ее при выходе?

Linux (и другие * nix) имеют time команда, которая позволяет записывать время выполнения - не только время настенных часов, но и время процессора ядра и системы, распределение памяти, активность дискового ввода-вывода и многое другое. Это полезно, потому что его можно запускать как простую оболочку команд, а также отслеживать дочерние элементы.

например

$ TIME="t=%E; I/O=%I:%O" time find $HOME > /dev/null
t=0:08.78; I/O=821408:0

но счетчики сети %r и %s подсчитывать только вызовы send () / recv (); нет TCP и нет объема данных. Так что они бесполезны для сетевой активности.

Я подтвердил с

TIME="t=%E; I/O=%I:%O" time wget $somewebsite -O /dev/null

чтение / запись этого сокета не учитывается для ввода-вывода, как и фиктивные устройства. То же самое для stdio. Это только кажется, что отслеживает чтение и запись файловой системы.

Но где я могу получить статистику сети?

Я знаю, что могу использовать множество инструментов, например:

но ни один из них не упрощает нацеливание только на один процесс или дерево процессов и запись его общей сетевой активности за время его существования.

Я знаю, что можно установить socat вверх как прокси. Но это тоже очень неудобно; он не может работать просто как оболочка.

perf может это сделать, но он очень зависит от платформы и может быть хрупким.

Конечно, есть что-то простое и банальное, что либо:

?