Якщо вас влаштовує загальна пропускна здатність вводу / виводу, що використовується (або якщо ваша програма майже повністю мережеве введення / виведення), ви можете переглянути /proc/<pid>/io
файл. Ви хочете, щоб rchar
і wchar
поля. Ви можете відняти read_bytes
і write_bytes
, так як вони представляють собою операції читання і запису на рівні зберігання. Дивіться розділ 3.3 http://www.kernel.org/doc/Documentation/filesystems/proc.txt .
Якщо вам потрібна більша роздільна здатність .... ви можете, можливо, сценарій цього сценарію використовувати, lsof
і strace
, хоча, було б боляче, щоб виправити всі кутові справи правильно. Основна ідея полягає в тому, щоб розібрати висновок strace -p <pid>
, захоплюючи перший параметр (= дескриптор файлу) і повертається значення (= число байт) з read()
, write()
, send()
і recv()
викликів ( ПРИМІТКА Є ще кілька системних викликів для прослуховування, я гавань » т відстежив їх усіх). Відмовитися від негативних значень; вони вказують на помилки. Використовуйте, lsof -p <pid>
щоб визначити, які дескриптори файлів є сокетами TCP / UDP, і підсумовуйте підрахунки за fd. Ця стратегія не вимагає кореня, доки ви володієте процесом, який ви перевіряєте, але писати було б насправді волохато, не кажучи вже про те, щоб писати добре.