Команда типа Top, настраиваемая из командной строки

Ответ находится в этом потоке ....

Exerpt:

Следовательно, шаги будут такими:

  1. Уменьшите размер файловой системы / home. (например.если это ext4, его размер следует изменить с помощью resize2fs).

  2. Уменьшите размер раздела / home LVM (/ dev / mapper / fedora_hostname-home) так, чтобы он полностью включал сжатую файловую систему / home, используя lvreduce

  3. Если сжатая файловая система меньше чем раздел / home LVM, вы можете снова изменить размер файловой системы, чтобы полностью заполнить логический том LVM . Я обычно использую этот метод, поэтому мне не нужно точно рассчитывать размеры! : P

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

Шаги для увеличения раздела / будут такими:

  1. Увеличить раздел / LVM (/ dev / mapper / fedora_hostname-root), чтобы заполнить свободное пространство (с помощью lvextend)

  2. Увеличить / LUKS раздел для заполнения / dev / mapper / fedora_hostname-root LVM-раздел (с использованием cryptsetup resize)

  3. Увеличить / файловую систему для заполнения / LUKS-раздела (например, с помощью resize2fs , если ext2 / 3/4)

1
08.04.2019, 14:25
1 ответ

Это дилемма, не так ли?

  • topимеет автоматическое обновление, но не позволяет указать отображаемые столбцы.
  • psи тому подобное можно указать, какие столбцы выводить, но не обновлять постоянно.

Я частично иду к решению этой проблемы для себя.

У меня уже есть инструмент, который может принимать данные таблицы, вводимые по каналу, и отображать их на весь экран на терминале в прокручиваемом столбцовом формате. Это команда console-flat-table-viewerиз набора инструментов nosh. Подавайте ему через определенные промежутки времени на стандартный ввод последовательность таблиц, разделенных соответствующим символом разделителя файлов , и он обеспечит постоянно обновляемое отображение.

Обратите внимание, что это не подобно watch. watchпринимает любой старый ввод. console-flat-table-viewerожидает, что его ввод будет таблицей в одной из нескольких хорошо -известных кодировок плоских файлов, которые можно найти в операционных системах Unices и Linux,а его пользовательский интерфейс представляет ее в виде таблицы , выровненной по строкам и столбцам, с заголовками и курсором.

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

В него можно передать вывод команды topв ее "пакетном" режиме:

while top -b all | sed -e '1,8s/^/#/' -e $'1i\\n\\f'
do
    sleep 1
done | 
console-flat-table-viewer --header-count 1

sedпревращает в комментарии часть вывода top, которая на самом деле не является таблицей процессов, что в противном случае привело бы к путанице в структуре таблицы, и добавляет в разделитель файлов . В кодировке таблицы, которая соответствует тому, что выводит top, что руководство console-flat-table-viewerназывает форматом space, разделителем файлов является & #x240c; символ, который необходимо экранировать, чтобы sedне удалял его. (ASCII имеет реальный & #x241c; символ, который console-flat-table-viewerпонимает для asciiтаблиц. Однако это не та кодировка, которую выводит top.)

Я добавляю & #x240c; символ с sed, чтобы уменьшить мерцание дисплея, так что console-flat-table-viewerне получает его до тех пор, пока непосредственно перед остальными данными таблицы. Альтернатива, которая мерцает немного больше, потому что есть интервал между символами & #x240c; а табличные данные, во время которых console-flat-table-viewerотображает пустую таблицу, должны сначала просто вызвать printf.

Точно так же команды, которые генерируют выходные данные, входят в состояние цикла while, так что сломанный канал при выходе console-flat-table-viewerприводит к корректному завершению цикла.

Но это не обеспечивает контроль над столбцами.

В качестве альтернативы можно передать вывод команды FreeBSD procstat:

while printf '\f' ; procstat -a
do
    sleep 1
done | 
console-flat-table-viewer --header-count 1

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

Можно использовать команду BSD ps:

while ps -a -x -o "pid,ppid,user,logname,time,state,wchan,start,comm" | sed -e $'1i\\n\\f'
do
    sleep 1
done |
console-flat-table-viewer --header-count 1

Команда psпод лицензией GNU -в Ubuntu Linux имеет другой синтаксис командной строки -, который сам по себе представляет собой несколько вопросов и ответов, но его можно использовать аналогичным образом.

Хотя это имеет точное -детальное управление столбцами, оно снова не устраняет должным образом пробелы внутри полей.

В BSD есть способ справиться с этим, начиная с 4.4BSD в 1990-х. Это система кодирования vis(), которую уже используют различные плоские таблицы BSD (, такие как /etc/fstab). console-flat-table-viewerтоже уже умеет его расшифровывать. Было бы очень желательно, чтобы psили procstat, предпочтительно оба, моглиvis-кодировать свои выходные данные.

Очевидным следующим шагом для пользователей графического интерфейса является (в настоящее время гипотетическая )утилита, которая заменяет console-flat-table-viewer, принимает те же входные данные и оставляет входную сторону конвейера неизменной, а также отображает постоянно обновляемые таблицы. с графическим интерфейсом вместо TUI.

Тогда у нас мог бы быть гибкий механизм, состоящий из составных инструментов, соединенных трубами. & #9786;

Дополнительная литература

-1
28.01.2020, 00:16

Теги

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