только отобразите df строки, которые имеют использование большего количества фс, чем 80%

Традиционный стек создается на 3 основных компонентах:

  • X-сервер, который обрабатывает отображение
  • Менеджер окон, которые помещают окна в кадры, окна уменьшения дескрипторов и т.д. Это - часть разделения механизма от политики в Unix
  • Клиенты, которые выполняют полезную задачу как отображающийся stackexchange веб-сайт. Они могут использовать X-протокол непосредственно (самоубийство), использовать xlib или (немного легче) xcb или использовать инструментарий, такой как GTK + или QT.

X архитектуры была сделана сетью, следовательно разрешающей клиентам быть на отдельном хосте затем сервер.

Пока все хорошо. Однако это было изображением от пути назад. В наше время это не ЦП, который обрабатывает графику, но GPU. Были различные попытки включить его в модель - и место, когда ядро въезжает в место к большему, расширяются.

Во-первых там были сделаны некоторыми предположениями относительно использования видеокарты. Например, только экранный рендеринг был принят. Я не могу найти эту информацию о Википедии прямо сейчас, но DRI 1 также предположил, что только одно приложение будет использовать OpenGL одновременно (я не могу заключить в кавычки сразу же, но я могу вскопать ошибку, где это было близко как WONTFIX с примечанием для ожидания к DRI 2).

Некоторые временное решение были предложены для косвенного рендеринга (необходимый для составного WM):

  • XGL - ранние другие приложения суждения, говорящие непосредственно с картой
  • AIGLX - принятое суждение, что свойства сети использования протокола OpenGL
  • Собственное решение Nvidia

Работы над более новой архитектурой (DRI 2) были запущены. Это включало:

  • Поддержка в ядре памяти, обрабатывающей (GEM/TTM)
  • Ядро modesetting (KMS), позволяющий изменить разрешение в ядре следовательно избегающие задержки при переключении между X и консоль и немного других функций (как отображающееся сообщение на панике, даже если X работают - какой IIRC планируется, чтобы быть реализованным).

Так или иначе ортогональный для перемещения в ядро работы над драйверами Галлия были запущены. Библиотека Mesa запустилась как реализация OpenGL на ЦП, и затем она начала использовать ускорение GPU. Это всегда было, напрягаются к OpenGL. В OpenGL 3.0 модель значительно изменилась, и переписывание библиотеки было неизбежно. Однако они пользуются возможностью для разделения кода на несколько слоев, извлекающих общий код и обеспечивающих API низкого уровня, позволяющий реализовать различный 3D API сверху его - позволяющий, например, Вино обеспечить DirectX, говорящий непосредственно с Галлием вместо того, чтобы пройти уровень OpenGL API (который не может иметь прямого 1-1 вызова).


Уэйленд является проектами, который считает вышеупомянутое немного сложным и с также "историей". Дизайн с 1984 (хотя высоко изменено и адаптированный) не делает соответствует началу 21 c. по словам сторонников.

Это, предполагают для предложения большей гибкости и лучшей производительности, хотя это все еще пропускает некоторые важные функции как полная поддержка OpenGL (и важное для некоторых - сетевая поддержка).


Немного больше о настольных средах и менеджерах окон. Менеджер окон является приложением, ответственным за то, как окно будет вести себя - например, это ответственно за управление рабочими областями, таща строку заголовка (вещь сверху экрана с windo заголовком, и минимизируйте/максимизируйте/закройте кнопки), и т.д.

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

Через какое-то время составные WM были представлены, который использует OpenGL и косвенный рендеринг, чтобы сделать их работу. Они обеспечивают не только графические эффекты, но также и позвольте упрощенное внедрение некоторых функций доступности (как усилитель).

8
06.06.2017, 23:09
5 ответов

Принятие Вас не имеет имен устройств, содержащих пробелы (которые являются болью когда дело доходит до парсинга вывода df):

df -P | awk '0+$5 >= 80 {print}'

Адаптируйте полевое число, если Вы хотите использовать свою реализацию df выходной формат, а не формат POSIX.

Без 0+, сравнение было бы лексическим (9% затем было бы больше, чем 80). При помощи + оператор двоичной арифметики, мы вызываем $5 быть преобразованным в число (так 9% становится 9) и сравнение, чтобы быть числовым. Используя + унарный оператор (как в awk '+$5 >= 80') работы в некоторых awk реализации, но не в традиционных (те записанные A, W и K), где тот оператор просто проигнорирован.

19
27.01.2020, 20:10
  • 1
    df -P | awk '$5 >= 80 {print}' работы для меня: можно ли включать примечание о преимуществе использования substr?Спасибо. –  jasonwryan 16.06.2011, 12:41
  • 2
    @jasonwryan: Я не помнил бесцеремонно, проигнорировал ли awk запаздывание нечисловых символов при интерпретации строки как числа. Это делает, так действительно нет никакой потребности удалить запаздывание % явно. –  Gilles 'SO- stop being evil' 16.06.2011, 12:56
  • 3
    '$5 >= 80 работы, т.е. это игнорирует запаздывание %, но < > == не работайте таким же образом..., тогда как (предыдущее редактирование) версия под-Тринга, кажется, работает на большинство ситуаций со сравнением, но это также перестало работать когда по сравнению с < 100 ... Я предполагаю, что это вызвано тем, что это сравнивает подстроку.. –  Peter.O 16.06.2011, 16:16
  • 4
    @fred: О, я вижу. Числовое преобразование действительно игнорирует нечисловой суффикс, но работа операторов сравнения над строками, так здесь оператор, делающий сравнение строк, если обе строки не являются числовыми. Лучший способ состоит в том, чтобы вызвать строку к числу (с + оператор). –  Gilles 'SO- stop being evil' 16.06.2011, 17:05
  • 5
    Семь лет спустя... +1. –  RonJohn 13.03.2018, 21:14
df | egrep "([89][0-9]|100)%"

добьется цели.

-2
27.01.2020, 20:10
  • 1
    и что происходит, когда у меня есть 92%, свободные на точке монтирования? –  LanceBaynes 16.06.2011, 10:22
  • 2
    Это хорошо работает для 92%; это хорошо работает для 80 - 100%... Я вполне озадачен о том, почему кто-то отметил его...., возможно, это потому что мой df вывод отличается.... Ага! Я просто проверил: мое значение по умолчанию произвело только шоу Filesystem 1K-blocks Used Available Use% Mounted on ... таким образом, это просто зависит от того, что Ваш вывод (как упомянуто в ответе Gilles).. Если существует секунда % столбец (как в вопросе), запаздывание .*% должен работать: df | egrep "([89][0-9]|100)%.*%" ... Теперь я понимаю, почему кто-то отметил... –  Peter.O 16.06.2011, 17:51

Я согласен с ddeimeke, но это решение работает только для 80-89%, например, не показывает 93%.

Для этого (например,> 70%):

df -k | egrep "([70,80,90][0-9]|100)%"
-1
27.01.2020, 20:10

Не так элегантно, но работает. Пожалуйста, замените ext4 на свою собственную fs (или на grep, если их много). Также замените 10 своим пороговым значением.

for fs in `cat /proc/mounts | grep ext4 | awk ' { print $2 }' | tr '\n' ' '` ;  do SPC=$( df $fs | awk 'END{ print $(NF-1) }' | sed 's/[^0-9]*//g' ) ; if [ $SPC -gt 10 ]; then  echo "$fs used more than 10";  fi done
0
27.01.2020, 20:10

Прошу прощения, не пытаюсь украсть чей-то вклад, но комментировать пока не могу.

Я заметил, что команда dfна самом деле пропускает что-то между 90 -99. Это исправило это изменение:

df -P | egrep "([80][0-9]|[90][0-9]|100)%"
0
24.02.2021, 11:48

Теги

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