LINUX.ORG.RU

htop 3.5.0

 , , , ,


0

1

9-го апреля, после года разработки, состоялся выпуск 3.5.0 интерактивной кроссплатформенной консольной утилиты htop, предназначенной для просмотра списка и информации о запущенных процессах и управления ими.

Утилита написана на языке C и распространяется по лицензии GNU GPL 2.0. Основные изменения:

  • добавлена тема оформления COLORSCHEME_NORD;
  • добавлена опция показа CPU SMT;
  • добавлено описание индикатора NetworkIO;
  • добавлен индикатор SecondsUptime;
  • добавлено чтение температуры Tctl;
  • добавлено редактирование цифр в числовых опциях;
  • в terminalSupportsDefinedKeys добавлен эмулятор терминала foot;
  • добавлена обработка события потери фокуса для обеспечения согласованности действий мыши;
  • добавлена логика обработки датчиков Amlogic S905W и Snapdragon 410;
  • добавлена опция командной строки --no-function-bar для скрытия строки c функциональными клавишами;
  • добавлена опция командной строки --no-meters для скрытия индикаторов;
  • выравнивание текста индикатора GPU;
  • добавлен экран Backtrace (используется libunwind-ptrace);
  • исправление отрицательных значений координаты x в дополнительных индикаторах CPU:
  • изменено отображение packets per second в индикаторе NetworkIO;
  • динамическое масштабирование «графических» индикаторов и отображение процентов;
  • реализован редактор строк в экранах поиска, фильтрации и (пере)именования;
  • сокращено время старта программы с помощью кеширования всех результатов getpwuid;
  • добавлены индикаторы DiskIORate и DiskIOTime;
  • отслеживание значения PID с максимальным значением и масштабирование столбца соответствующим образом;
  • добавлена поддержка системы инициализации OpenRC и её метрик;
  • проверка числа CPU на s390;
  • обработка особых случаев частоты процессора в /proc/cpuinfo;
  • пропуск записей о драйверах loopback и MD (multi-device) в /proc/diskstats;
  • комбинация клавиш Ctrl+U очищает строку фильтра или поиска во время её редактирования;
  • пустой аргумент опции командной строки --filter= считается недопустимым;
  • значение physicalID по умолчанию установлено равным 0, так как старые процессоры Intel поддерживают только это значение;
  • доработан индикатор Memory для полного контроля с учетом особенностей платформы;
  • нет необходимости в «фантомных» потоках CPU;
  • устранена исходная принудительная задержка для сокращения времени запуска;
  • индикатор DiskIO переделан в комбинированный, состоящий из двух субиндикаторов;
  • упрощение офлайн-маркировки процессоров;
  • обновление значение «total» в непроцентных индикаторах;
  • использование списка клавиш по умолчанию для Dec/Inc в DisplayOptions;
  • реализована явная поддержка переменной окружения NO_COLOR;
  • исправлена поддержка *-256color при определении значения $TERM;
  • в htop.desktop добавлена поддержка армянского и японского языков;
  • многочисленные улучшения системы сборки и CI;
  • улучшения в поддержке Darwin, OpenBSD, NetBSD и Solaris;
  • улучшения в README;
  • добавлена версия 1.0 политики вклада с использованием «искусственного интеллекта»;
  • в проект добавлен документ Code of Conduct;
  • другие улучшения и исправления ошибок.

>>> Подробности на GitHub

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 10)

в проект добавлен документ Code of Conduct;

И как же без него всё это время жили? Дикари!

CrX ★★★★★
()

Вот это они разогнались по фичам конечно)

wandrien ★★★
()

В истории правок есть отсортированный список изменений, если интересно.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)

Что-то запоздало на неделю, 4 апреля пришла обнова. Но лучше позже, чем мимо.

dmitry237 ★★★★★
()

В одном чорном-чорном городе был чорный-чорный ЛОР. И на этом чорном-чорном ЛОРе прямо на главной была чорная-чорная картинка. И весила эта картинка ВОСЕМЬ С ЛИШНИМ МЕГАБАЙТ.

А давайте уже jpeg-и в новости постить, это новость, а не галерея.

Aceler ★★★★★
()

А вообще, я однажды копнул, кто такой Хишам Мухамед, автор htop.

Во-первых, он Хишам, а Мухаммед — это фамилия, не наоборот. Во-вторых, он бразилец и его родной язык португальский. В-третьих, он блюзовый музыкант, вокалист и клавшиник.

И это прекрасно.

Aceler ★★★★★
()
Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от Aceler

В одном чорном-чорном городе был чорный-чорный ЛОР. И на этом чорном-чорном ЛОРе прямо на главной была чорная-чорная картинка. И весила эта картинка ВОСЕМЬ С ЛИШНИМ МЕГАБАЙТ.

Если эту картинку просто закинуть в gimp и реэкспортировать с максимальным сжатием, то она будет весить 138k. А если на неё натравить optipng, то и вовсе 104:

$ ll original*
-rw-r--r-- 1 vadim vadim 136K апр 14 18:41 original-2.png
-rw-r--r-- 1 vadim vadim 104K апр 14 18:44 original-3.png
-rw-r--r-- 1 vadim vadim 8,0M апр 14 18:40 original.png

Тут скорее вопрос в том, почему в таком виде картинка вообще была залита изначально, чего её там скриншотер у кого-то не жмёт.

Давайте спросим @maxcom, может он добавит запуск optipng на сервере.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Димец уже всё заменил, получилось даже меньше. Но давайте спросим. Может, лимит по размерам добавить для новостей.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

А давайте уже jpeg-и в новости постить, это новость, а не галерея.

Не надо. Нормально сжатый png адекватно весит, тут просто косяк был.

Каждому формату своё назначение. JPEG хорош для фотографий, скриншотов из кино или игр — там плавные переходы и вот это всё, разница глазом обычно не заметна, если не сравнивать специально. Но для скриншотов «чорнага экрану» он не годится — там чёткие линии и пиксели, особенно если растровый шрифт используется — и JPEG там люто артефачит. Даже на качестве 100, при котором он всё равно размером к лосслесу приближается неумолимо.

P.S. Когда JPEG-XL запилят во всех браузерах повсеместно из коробки, тогда заживём. Там и лосслесс-режим жмёт лучше, чем PNG, и в лосси-режиме качество намного выше при том же объёме, чем в JPEG (ну или объём меньше при том же качестве), и прозрачность в лосси можно юзать…

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Но для скриншотов «чорнага экрану» он не годится — там чёткие линии и пиксели, особенно если растровый шрифт используется — и JPEG там люто артефачит.

У нас тут новости, а не галерея, повторюсь. Впрочем, не настаиваю, если коллектив модераторов считает, что png, то пусть будет png.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

У нас тут новости, а не галерея, повторюсь.

Неважно, хоть вообще иллюстративный материал в презентации. Разные форматы изображений по-разному подходят для разного собственно содержания изображений. Но контекста, а контента. Пиксель-арт в JPEG будет выглядеть как говно хоть в галерее, хоть в новости о пиксель-арт художнике ;)

При этом, естественно, что-то вроде скриншотов 3D-игр (да и не-пиксельных 2D тоже) в новостях имеет смысл постить в JPEG.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 3)
Ответ на: комментарий от Aceler

Кстати, поправлю себя. Для подобных картинок JPEG помимо артефачинга не просто «приближается по объёму к PNG», а получается намного больше. Я вот только что просто запустил fastfetch и заскринил. Получилось 14 КБ в PNG и 255 КБ в JPEG при качестве 95%. Даже после ect. Ну так и какой смысл постить подобное в JPEG, даже если «не галерея»?

P.S. При качестве 1% объём наконец приблизился к PNG, но всё равно больше — 21 КБ. На картинке при этом месиво ;)

Ну а собственно скриншот из сабжа весит 91 КБ в PNG и 112 КБ в JPEG при качестве 50%.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от wandrien

Тут скорее вопрос в том, почему в таком виде картинка вообще была залита изначально

Не помню, зачем мне понадобился несжатый png в настройках Ksnip, да так и забыл про это. :(

dataman ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

выравнивание текста индикатора GPU

А тут интересно шо кажут?

Добавил четвёртый скриншот.

dataman ★★★★★
() автор топика

добавлена тема оформления COLORSCHEME_NORD

Ух ты, сколько лет пользуюсь, никогда туда не заходил даже, устраивал дефолт более чем полностью. Оказывается, там темы есть :D

добавлена версия 1.0 политики вклада

Что за политика вклада? О_о

А вообще, реально много изменений. Отличная тулза.

Gonzo ★★★★★
()
Ответ на: комментарий от Aceler

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

И это прекрасно.

о! круто, не знал, надо будет послушать на досуге

z0idator
()
Ответ на: комментарий от gagarin0

CoC:

* Запрещается дискриминация по любым политическим взглядам (в том числе и фашистского и нацистского толка).
* Запрещается дискриминация как противников гендерной идеологии так и её противников.
...



Интересно, такой КоК примут?

urxvt ★★★★★
()

вклада с использованием «искусственного интеллекта»

т.е. вот так одним росчерком пера все испохабить?!
страшно представить, что он наителекорамыслит там?! :о)

p.s.
- действительно, одна из наибольшей нужности!
- собирается без проблем
- внешне без изменений (видимо, все внутри хитро скрыто :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 3)

Отлично, ждем ебилдов! Пока только 3.4.1-r2.

yaba ★★★
()
Ответ на: комментарий от Aceler

крутенька... убежал собирать, смотреть, тестить... :о)
p.s. печальненько, мои старушки уже не тянут

CMake Error in btop-1.4.6/build/CMakeFiles/CMakeScratch/TryCompile-sBEi97/CMakeLists.txt:
  Target "cmTC_52750" requires the language dialect "CXX23" .  But the
  current compiler "GNU" does not support this, or CMake does not know the
  flags to enable it.
p.s.2
спасибо, конечно, но я такое не выкурю... самая первая версия не собирается... гм эге-гей, буду не эйч-топе :о)
g++: error: unrecognized command line option ‘-std=c++20’
g++: error: unrecognized command line option ‘-std=c++20’
g++: error: unrecognized command line option ‘-fstack-clash-protection’
g++: error: unrecognized command line option ‘-fstack-clash-protection’
... бла-бла-бля

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 6)

с современными тенденциями особенно актуально. Мусора в системе дичайшие объёмы

Когда-то по выхлоп `ps ax` умещался в 40 строчек и можно было точно назвать какой процесс что делает, кем/чем/зачем запущен и сколько может потреблять.

PS/ к mount тоже относится. Там тоже лютый ппц

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

к mount тоже относится.

#!/bin/bash

echo "--------------------------------------------------------------------------------
mount list 
--------------------------------------------------------------------------------"

# Получаем вывод mount
MOUNT_ALL=$(mount)

# Разделяем на группы
MOUNT_SD=$(echo "$MOUNT_ALL" | grep '^/dev/sd' | sort -k3)
MOUNT_SHM=$(echo "$MOUNT_ALL" | grep '/dev/shm' | sort -k3)
MOUNT_OTHER=$(echo "$MOUNT_ALL" | grep -v '^/dev/sd' | grep -v '/dev/shm' | sort -k3)

# Объединяем с пустыми строками между группами
MOUNT_OUTPUT="${MOUNT_SD}

${MOUNT_SHM}

${MOUNT_OTHER}"

# Убираем множественные пустые строки, но оставляем по одной между группами
MOUNT_OUTPUT=$(echo "$MOUNT_OUTPUT" | cat -s)

# Инициализируем максимальные позиции
MAX_ON_POS=0
MAX_TYPE_POS=0
MAX_PAREN_POS=0

# Проходим по строкам для поиска максимальных позиций
while IFS= read -r line; do
    [ -z "$line" ] && continue
    
    ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
    if [ -n "$ON_POS" ] && [ "$ON_POS" -gt "$MAX_ON_POS" ]; then
        MAX_ON_POS=$ON_POS
    fi
    
    TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
    if [ -n "$TYPE_POS" ] && [ "$TYPE_POS" -gt "$MAX_TYPE_POS" ]; then
        MAX_TYPE_POS=$TYPE_POS
    fi
    
    PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
    if [ -n "$PAREN_POS" ] && [ "$PAREN_POS" -gt "$MAX_PAREN_POS" ]; then
        MAX_PAREN_POS=$PAREN_POS
    fi
done <<< "$MOUNT_OUTPUT"

# Если ничего не нашли, выводим как есть
if [ "$MAX_ON_POS" -eq 0 ] || [ "$MAX_TYPE_POS" -eq 0 ] || [ "$MAX_PAREN_POS" -eq 0 ]; then
    echo "$MOUNT_OUTPUT"
    exit 0
fi

# Выравниваем строки
while IFS= read -r line; do
    if [ -z "$line" ]; then
        echo ""
        continue
    fi
    
    ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
    TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
    PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
    
    if [ -n "$ON_POS" ] && [ -n "$TYPE_POS" ] && [ -n "$PAREN_POS" ]; then
        # Выравниваем 'on'
        ON_SPACES=$((MAX_ON_POS - ON_POS))
        LINE_WITH_ON="${line:0:$ON_POS}$(printf '%*s' $ON_SPACES '')${line:$ON_POS}"
        
        # Пересчитываем позицию 'type' после выравнивания 'on'
        NEW_TYPE_POS=$(echo "$LINE_WITH_ON" | grep -b -o ' type ' | cut -d: -f1)
        
        # Выравниваем 'type'
        TYPE_SPACES=$((MAX_TYPE_POS - NEW_TYPE_POS))
        LINE_WITH_TYPE="${LINE_WITH_ON:0:$NEW_TYPE_POS}$(printf '%*s' $TYPE_SPACES '')${LINE_WITH_ON:$NEW_TYPE_POS}"
        
        # Пересчитываем позицию '(' после выравнивания 'type'
        NEW_PAREN_POS=$(echo "$LINE_WITH_TYPE" | grep -b -o '(' | head -1 | cut -d: -f1)
        
        # Выравниваем '('
        PAREN_SPACES=$((MAX_PAREN_POS - NEW_PAREN_POS))
        echo "${LINE_WITH_TYPE:0:$NEW_PAREN_POS}$(printf '%*s' $PAREN_SPACES '')${LINE_WITH_TYPE:$NEW_PAREN_POS}"
    else
        echo "$line"
    fi
done <<< "$MOUNT_OUTPUT"

echo "--------------------------------------------------------------------------------"

-->

--------------------------------------------------------------------------------
/dev/sda1  on /                          type ext4            (rw,noatime,nodiratime,discard,errors=remount-ro)
/dev/sdc1  on /home                      type ext4            (rw,noatime,nodiratime,data=writeback,commit=15)
/dev/sdd1  on /mnt/add                   type ext4            (rw,noatime,nodiratime,data=writeback,commit=15)

tmpfs      on /dev/shm                   type tmpfs           (rw)
/dev/fuse  on /dev/shm/sun/.var/run/doc  type fuse            (rw,nosuid,nodev,user=sun)
gvfsd-fuse on /dev/shm/sun/.var/run/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=sun)

proc       on /proc                      type proc            (rw)
none       on /proc/sys/fs/binfmt_misc   type binfmt_misc     (rw)
sysfs      on /sys                       type sysfs           (rw)
fusectl    on /sys/fs/fuse/connections   type fusectl         (rw)
--------------------------------------------------------------------------------

df

#!/bin/bash

# Получаем вывод df -H
DF_OUTPUT=$(df -H)

# Разделяем на группы
DF_SD=$(echo "$DF_OUTPUT" | grep '^/dev/sd')
DF_RAM=$(echo "$DF_OUTPUT" | grep -E '^(tmpfs|devtmpfs)')
DF_OTHER=$(echo "$DF_OUTPUT" | grep -v '^/dev/sd' | grep -v -E '^(tmpfs|devtmpfs)' | grep -v '^Filesystem')

# Заголовок
HEADER=$(echo "$DF_OUTPUT" | head -1)

# Линия-разделитель
LINE=$(printf '%*s' 80 | tr ' ' '-')

# Вывод с обрамлением
echo "$LINE"
echo "$HEADER"
echo "$LINE"
echo "${DF_SD}"
echo ""
echo "${DF_RAM}"
echo ""
echo "${DF_OTHER}"
echo "$LINE"

-->

--------------------------------------------------------------------------------
Filesystem      Size  Used Avail Use% Mounted on
--------------------------------------------------------------------------------
/dev/sda1       984G  149G  786G  16% /
/dev/sdc1       4.0T  1.9T  1.9T  51% /home
/dev/sdd1       2.0T  1.1T  823G  56% /mnt/add

tmpfs            17G  1.2M   17G   1% /run
devtmpfs         17G     0   17G   0% /dev
tmpfs           4.3G  454M  3.9G  11% /dev/shm

cgroup_root     8.4M     0  8.4M   0% /sys/fs/cgroup
--------------------------------------------------------------------------------

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 3)
Ответ на: комментарий от sunjob

убежал собирать
самая первая версия не собирается

А что, собранного btop ещё нет в каком-то репозитории?
Даже в Debian он есть. :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

мои старушки уже не тянут

- slackware-14.2

p.s. да ничего, не это самое главное в жизни :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от Gonzo

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

gagarin0
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.