Проверить и добавить в репозиторий пакетов?

Низкий уровень

На низком уровне вы можете получить эту информацию из /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.

1
25.05.2016, 23:10
1 ответ

Чтобы узнать, существует ли пакет где-то в дереве каталогов, не нужно использовать 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
1
27.01.2020, 23:48

Теги

Похожие вопросы