Как узнать, сколько байт ввода-вывода прочитал процесс в Linux?

Вопрос или проблема

Перепост в Super User

Похоже на колонку “IO Read Bytes” в Диспетчере задач Windows.

Проверьте /proc/<pid>/io.

Или попробуйте iotop.

Я думаю, что вы ищете atop.

Если приложение состоит из одного процесса, который вы можете запустить, и вам нужны счетчики ввода-вывода этого процесса в конце, то этот ответ может быть полезен:

Он работает, храня счетчики ввода-вывода процессов оболочки из /proc/[pid]/io/ в переменной среды перед запуском процесса, а затем вычитает их после завершения процесса.

Ответ или решение

Чтобы определить, сколько байт ввода-вывода (IO) процесс в Linux прочитал, можно использовать несколько методов, каждый из которых подойдет в зависимости от ваших нужд.

  1. Использование файла /proc/[pid]/io:
    Каждый запущенный процесс в Linux имеет директорию в /proc, где [pid] — это идентификатор процесса. Для получения информации о вводе-выводе конкретного процесса можно открыть файл /proc/[pid]/io. В этом файле содержится несколько показателей, включая количество прочитанных байт.

    Вы можете использовать следующую команду в терминале:

    cat /proc/[pid]/io

    Здесь вы увидите строки, похожие на следующие:

    rchar: 123456
    wchar: 789012
    syscr: 345
    syscw: 678
    read_bytes: 123456

    Поле read_bytes особенно важно, так как оно показывает, сколько байт было прочитано процессом.

  2. Использование iotop:
    Установив и запустив iotop, вы можете просматривать статистику ввода-вывода в реальном времени по всем процессам. Это полезно, если вы хотите наблюдать активность IO в динамике.

    Установка может быть выполнена через пакетный менеджер вашей системы, например:

    sudo apt install iotop

    После этого запустите:

    sudo iotop
  3. Использование atop:
    atop — это утилита для мониторинга системы, которая также предоставляет информацию о показателях I/O. Она интегрирует данные о CPU, памяти, сети и I/O. Установите её и запустите команду:

    sudo atop

    В разделе I/O вы сможете видеть статистику для всех процессов.

  4. Мониторинг IO для одного процесса:
    Если вы хотите получить статистику ввода-вывода для процесса, который вы собираетесь запустить, вы можете сделать это с помощью следующей команды:

    # Сохраняем текущие значения IO
    before=$(cat /proc/[pid]/io | grep read_bytes | awk '{print $2}')
    # Запускаем процесс
    [ваша команда для запуска процесса]
    # Сохраняем новые значения IO
    after=$(cat /proc/[pid]/io | grep read_bytes | awk '{print $2}')
    # Подсчитываем разницу
    echo "Bytes read: $((after - before))"

Эти методы позволяют эффективно отслеживать количество байт, прочитанных вашим процессом. Выберите тот, который лучше соответствует вашим требованиям и удобен для использования.

Оцените материал
Добавить комментарий

Капча загружается...