На низком уровне вы можете получить эту информацию из /sys/block/X/stat
, которая задокументирована здесь.
Пример содержимого выглядит следующим образом:
10465 3250 759844 27528 4400 2983 546848 66306 0 9754 93792
Нам нужны поля 1 и 3 для чтения и 5 и 7 для записи. Метод расчета одинаков для обоих, поэтому я буду обсуждать только чтения.
Столбец 1 — это количество операций чтения (которое, как вы заявили, вы уже можете отслеживать), а столбец 3 — это количество прочитанных секторов. Сектор 512 байт. Таким образом, чтобы рассчитать размер чтения, вы просто делаете $col3 * 512 / $col1
.
Цифры в этом файле являются общими с момента подключения диска к сети. Таким образом, чтобы вычислить средний размер чтения за определенный период времени, вы просто дважды читаете файл и вычисляете с помощью: ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1)
.
Обратите внимание, что приведенный выше метод дает вам размер OP, выполняемых на уровне приложения (описание не точное, но достаточно близкое). Ядро может объединять несколько операций вместе, поэтому количество операций, выполняемых на диске, становится меньше. Вычисление для этого: $col3 * 512 / ($col1 - $col2)
.И чтобы получить значение за промежуток времени: ($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))
iostat
также может дать вам значение, но менее точно. Он не различает записи и чтения и дает вам значение только в секторах, а не в байтах (поэтому снова умножьте на 512).
Но это команда iostat -x -d
, а столбец для просмотра — avgrq-sz
.
Чтобы узнать, существует ли пакет где-то в дереве каталогов, не нужно использовать dpkg
. find
подойдет, вы проверяете существование файла - тот факт, что это файл .deb
, практически не имеет значения.
например,
find /var/spool/apt-mirror/ -name 'astyle*.deb'
Если вы планируете делать это многократно для многих файлов, я бы рекомендовал перенаправить вывод find /var/spool/apt-mirror/ -type f
в файл, а затем использовать grep
для поиска в этом файле - это будет намного быстрее, чем запускать find
один раз для каждого поиска.
Если пакет отсутствует в вашем зеркале (и он существует в хранилище, которое вы зеркалируете), проверьте конфигурацию apt-mirror
и запустите apt-mirror
снова.
Чтобы узнать, должен ли пакет быть в зеркале, grep
для него в соответствующем Packages
файле. Например, у меня есть зеркало архива zfsonlinux для jessie, поэтому если бы я хотел узнать, должен ли пакет spl
быть в этом репозитории, я бы сделал что-то вроде:
# grep 'Package: spl$' /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages
Package: spl
или
# find /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/ -name 'Packages' -exec grep 'Package:\ spl$' {} +
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie-daily/main/binary-amd64/Packages:Package: spl
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages:Package: spl