Вопрос или проблема
Учитывая раздражающую особенность устройств loop
в snap
, мой вывод iostat
в Ubuntu 18.04.02
выглядит примерно так
Существует ли способ отфильтровать устройства loop
кроме | grep -v loop
?
$ iostat -xm
Linux 4.15.0-47-generic (pkara-pc01) 04/22/2019 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
19.85 0.03 5.64 2.18 0.00 72.30
Устройство r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
loop0 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.00 0.00 0.00 2.88 0.00 0.50 0.00
loop1 0.06 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.25 0.00 0.00 1.80 0.00 0.09 0.00
loop2 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.47 0.00 0.00 6.57 0.00 1.06 0.00
loop3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.40 0.00 0.00 2.50 0.00 0.00 0.00
loop4 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 8.54 0.00 0.00 2.44 0.00 1.54 0.00
loop5 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.29 0.00 0.00 2.86 0.00 0.76 0.00
loop6 0.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.55 0.00 0.00 1.89 0.00 0.17 0.00
loop7 0.06 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.39 0.00 0.00 1.75 0.00 0.24 0.00
sda 0.07 0.00 0.00 0.00 0.00 0.00 5.32 9.09 9.29 41.60 0.00 12.47 3.20 9.51 0.07
sdb 23.40 103.81 0.40 38.12 8.47 10.16 26.59 8.91 8.48 6.17 0.84 17.49 376.07 0.94 11.93
dm-0 31.96 113.83 0.40 38.08 0.00 0.00 0.00 0.00 12.17 10.89 1.63 12.74 342.57 0.82 12.00
dm-1 31.91 113.30 0.40 38.08 0.00 0.00 0.00 0.00 12.19 10.95 1.63 12.74 344.17 0.83 12.04
dm-2 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.51 0.00 0.00 19.90 0.00 0.41 0.00
dm-3 0.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 9.82 58.91 0.00 10.21 2.91 10.02 0.05
dm-4 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14.23 64.80 0.00 14.69 3.20 14.35 0.05
loop8 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.54 0.00 0.00 9.13 0.00 2.67 0.01
loop9 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.83 0.00 0.00 2.66 0.00 1.79 0.00
loop10 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 28.96 0.00 0.00 20.96 0.00 3.20 0.00
loop11 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 31.20 0.00 0.00 20.80 0.00 4.80 0.00
loop12 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18.56 0.00 0.00 9.28 0.00 1.56 0.00
loop13 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.77 0.00 0.00 9.36 0.00 2.12 0.00
loop14 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 13.65 0.00 0.00 9.76 0.00 0.71 0.00
loop15 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 30.40 0.00 0.00 20.96 0.00 4.08 0.00
loop16 0.04 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.85 0.00 0.00 5.22 0.00 0.49 0.00
loop17 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5.23 0.00 0.00 2.48 0.00 1.00 0.00
loop18 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.66 0.00 0.00 2.50 0.00 0.70 0.00
loop19 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14.86 0.00 0.00 6.27 0.00 3.29 0.00
loop20 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12.48 0.00 0.00 9.15 0.00 1.65 0.00
loop21 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 8.66 0.00 0.00 9.83 0.00 1.29 0.00
loop22 0.04 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5.10 0.00 0.00 5.09 0.00 0.70 0.00
loop23 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 16.32 0.00 0.00 3.05 0.00 1.16 0.00
loop24 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20.60 0.00 0.00 2.50 0.00 4.20 0.00
loop25 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 16.30 0.00 0.00 2.44 0.00 2.37 0.00
loop26 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.60 0.00 0.00 0.00
Я не нашел способа исключить устройства loop
и отобразить остальные, но явное указание конкретных устройств может помочь вам, т.е.
S_COLORS=always iostat -x -p nvme0n1 -p sda -p sdb -p dm-4
Я собрал быстрый команду для достижения этого. Результаты могут отличаться
iostat |grep -v loop|tail -n +7|awk '{print $1}' |xargs iostat 1
Первый iostat
получает список устройств, а grep
фильтрует все устройства loop
. Команда tail
удаляет строки заголовка, и вам может понадобиться настроить номер для других версий iostat
.
awk
извлекает первый столбец, который является названием устройства, а xargs
передает это в iostat
. Число 1
выводит результат каждую секунду, но вы можете опустить его для однократного вывода.
Немного кривой метод, но вывод имеет цвет и исключает устройства loop
.
Другой вариант – использовать опцию -z
-z Сказать iostat
, чтобы пропустить вывод для любых устройств, для которых не было активности в течение периода выборки.
[отредактировано]
Попробуйте
iostat -xm -p {имя устройства}
# Чтобы отобразить только конкретное устройство.
Вы можете использовать sed
вместо grep
,
iostat -xm | sed '/^loop/d'
Если я не ошибаюсь,
Более простой и лучший способ – это передать и отфильтровать. В команде iostat
нет специфического способа исключения устройств.
Ответ или решение
Для многих администраторов систем, работающих с iostat
, задача фильтрации вывода для исключения ненужных данных, таких как устройства loop
, может оказаться актуальной. В случае Ubuntu 18.04.02, вывод команды iostat
может включать большое количество строк, связанных с устройствами loop
, которые могут затруднять анализ информации о других устройствах. В данной статье мы рассмотрим несколько способов избегать отображения информации о loop
устройствах в выводе iostat
, кроме использования стандартного подхода с grep -v loop
.
1. Использование конкретных имен устройств
Одним из наиболее эффективных методов является явное указание имен устройств, для которых вы хотите видеть информацию. Например:
iostat -xm -p nvme0n1 -p sda -p sdb -p dm-4
Здесь вы указываете iostat
выводить информацию только о конкретных устройствах. Это позволяет избегать ненужных loop
устройств и сосредоточиться на данных, которые действительно имеют значение.
2. Комбинирование команд
Если вы хотите динамически фильтровать устройства, можно использовать комбинацию команд. Например, следующая команда позволяет исключить loop
устройства и обновлять вывод в реальном времени:
iostat | grep -v loop | tail -n +7 | awk '{print $1}' | xargs iostat 1
Разберем эту команду по шагам:
iostat
: выводит информацию о всех устройствах.grep -v loop
: фильтрует строки, содержащиеloop
.tail -n +7
: пропускает первые шесть строк, которые обычно содержат заголовки.awk '{print $1}'
: извлекает имена устройств из первой колонки.xargs iostat 1
: передает список устройств обратно в командуiostat
, с частотой обновления в одну секунду.
3. Использование sed для фильтрации
Вы также можете использовать sed
вместо grep
, чтобы добиться аналогичного эффекта:
iostat -xm | sed '/^loop/d'
Эта команда удаляет все строки, начинающиеся с loop
, и выводит остальную информацию.
4. Использование флага -z
Для случаев, когда вы хотите исключить устройства, по которым не было активности, вы можете применить флаг -z
:
iostat -xm -z
Это позволит выводить только устройства, у которых была зафиксирована активность в заданный период.
Заключение
Как видно, существует несколько методов для исключения информации о loop
устройствах из вывода команды iostat
на Ubuntu 18.04.02. Выбор подходящего метода зависит от ваших нужд: хотите ли вы запрашивать конкретные устройства, динамически фильтровать вывод или просто избегать отображения неактивных устройств. Применение вышеуказанных методов позволит вам более эффективно управлять данными и сосредоточиться на важных аспектах работы вашего ИТ-инфраструктуры.