LINUX.ORG.RU

ttyplot 1.6.0

 , , , ,


1

1

После более месяца разработки состоялся выпуск небольшой консольной утилиты ttyplot, написанной на языке C с использованием библиотеки ncurses, и распространяемой по лицензии Apache-2.0.
Утилита предназначена для вывода графиков в реальном времени с получением данных из stdin / pipe.

Список изменений:

  • улучшена стабильность;
  • добавлена поддержка вывода многобайтных символов;
  • исправлены ошибки;
  • другие изменения.

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

★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

$ ping linux.org.ru | sed -u 's/^.*time=//g; s/ ms//g' | ttyplot -t "ping to LOR" -u ms -c "ё"

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

Угадал автора по заголовку :)

Werenter ★★★
()

Утилита для чтения чего-то там и вывода чего-то там, но при этом надо еще нахлобучиться с sed, awk и вообще, лучше выучить сриптинг баша. Нафига оно? Юз кейсы? Только серьезные.

Gonzo ★★★★★
()

cpu usage from vmstat using awk to pick the right column:

vmstat -n 1 | gawk '{ print 100-int($(NF-2)); fflush(); }' | ttyplot

Попробовал просто запустить первую часть команды, без ttyplot, выдает постоянно 98-100. Это что значит вообще? У меня система в простое, в conky и htop тоже все по нулям.

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

Так сама прога и грузит 100% в поток - потому и выдаёю около «стольника».

IMXO Студенческая поделка для хайпа...

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

Профессор man ttyplot пишет:

DESCRIPTION
       ttyplot  takes  data from standard input, most commonly some tool like ping(1), snmpget(1), netstat(8), ifconfig(8), sar(1), vmstat(8), etc., and plots in text mode on a terminal
       in real time.

       Supports rate calculation for counters and up to two graphs on a single display using reverse video for second line.

       The following options are supported:

       -2      Read two values and draw two plots, the second in reverse video.

       -r      Calculate counter rate and divide by measured sample interval.

       -c plotchar
               Use plotchar for the plot line, e.g.  ‘@ # % .’ etc.

       -e errcharmax
               Use errcharmax for plot error line when value exceeds hardmax.  Default: ‘e’.

       -E errcharmin
               Use errcharmin for plot error symbol, displayed when plot value is less than hardmin.  Default: ‘v’.

       -s softmax
               Use softmax as the initial maximum value but allow it to grow with input.

       -m hardmax
               Use hardmax as a hard value limit after which an error line will be drawn (see -e). Should be greater than hardmin, if set.

       -M hardmin
               Use hardmin as a definite minimum limit of the plot range. If a plot value is less than this, error symbol will be drawn (see -E).

       -t title
               Use title as the plot title.

       -u unit
               Label the vertical axis unit.

       -v      Print the current version and exit.

       -h      Print this help message and exit.

KEY BINDINGS
       When reading data from a pipe, ttyplot accepts the following commands typed at the terminal:

       q       Quit.

       r       Toggle "rate mode" on and off.
dataman ★★★★
() автор топика
Ответ на: комментарий от drfaust

сама прога и грузит 100% в поток

Так странно. Все остальное ж молчит, спецом запустил еще и htop.

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

Стоп. У меня ж даже первая часть команды

vmstat -n 1 | gawk '{ print 100-int($(NF-2)); fflush(); }'

почему-то выдает 98-100. Не знаешь, почему так? А htop и коньки по нулям.

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

Эта команда вычитает пред-пред-последнюю колонку из 100. Пред-пред-последняя колонка это 'id' (idle) - посмотри что в ней. Видимо в ней около нуля. (речь про вывод vmstat -n 1)

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

Ааа… тю, тогда ясно. 100 минус 0 или 2 вот и выходит.

Тогда какой смысл вообще в этом:

cpu usage from vmstat using awk to pick the right column:
vmstat -n 1 | gawk ‘{ print 100-int($(NF-2)); fflush(); }’ | ttyplot

Это ж, выходит, не cpu usage уже, а черти шо.

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

Вторая справа колонка это idle - простой проца. 100-idle это как раз нагрузка на него получается.

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

Там питон, так что сразу мимо. Ну и описание какое-то непонятное, я так и не понял можно ли его просто запустить.

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

Там питон, так что сразу мимо.

Как будто на баше удобнее данные для графика подготавливать, чем на питоне.

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

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

Лично мне шеллом однозначно удобнее чем питоном, потому что второй я почти не знаю. Но ещё удобнее на Си. Впрочем, если готовить на Си то я бы и рисовал той же своей прогой а не цеплял стороннюю.

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

Например вот этот график очень наглядно показывает статистику пинга и не надо вчитываться в 20 строк и думать. Или так же можно фпс glxgears померить. Или ещё что.

Короче обычная такая юникс-утилита. Может кому нибудь пригодится.

С другой стороны, функционал sed надо как нибудь в себя интегрировать. Ну или по крайней мере вырезание нужной цифры из типовой строки.

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

Так в том-то и дело. Накодить непонятно что, чтобы все равно потом запускать баш лапшу, а в конце дописывать ttyplot. Лол.

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

https://github.com/JuliaPlots/UnicodePlots.jl

Тут немного разные весовые категории. Julia есть только у людей, занимающихся расчётами, причём далеко не у всех из них (в нашей группе используют Python, например). А вот Python установлен практически у каждого пользователя Linux, кроме Iron_Bug :)

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

Потому что она (скорее всего) написана для другой версии vmstat, в которой другое число столбцов.

Ну в самом деле, нужно ж хоть немного уметь в минимальное даже не программирование, а в базовую соображалку, чтобы хотя бы понимать, что запускаешь. Скрипт пытается вычитать из 100 значение третьего с конца столбца, скорее всего из расчёта на то, что это будет столбец idle (если из 100 вычесть idle, получишь как раз загрузку процессора). Но с тех пор, как писался этот однострочник, в vmstat добавили столбец «guest» и всё поехало.

В общем, кушайте юниксвей, не обляпайтесь :-)

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

Тот самый SVGAlib, который ещё первый Doom юзал?

Так оно же бесполезное.

Если ты хочешь просто графику без иксов, то на более-менее свежих системах уже давно есть можно напрямую дёргать DRM и KMS. На системах чуть постарее, можно замаппить фреймбуффер и писать в него.

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

Оно полезное тем что не зависит от ОС. Как и старые иксы, которые были полностью самодостаточными и драйвера видеокарт даже грузили кроссплатформенным способом чтоб не зависеть от того, поддерживает ли конкретное ядро конкретной ОС тот бинарный формат (elf, a.out, ещё чего-то). А тут кто-то потом одобрял коммит, в которой какой-то вредитель эту кроссплатформенность повырезал.

Но минус есть - для прямого обращения к железу нужно быть рутом, для иксов это приемлемо, а вот для юзерских прог нет.

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

На моей практике не бывает кроссплатформы без крови и боли.

Напрямую дергать VGA режим, это кстати, не так уж и кроссплатформенно.

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

Оно кроссплатформенно в том плане что это просто драйвер видеокарты, который не зависит от ОС. Видеокарта, разумеется, должна быть совместимой с драйвером (а ещё проц должен быть той же архитектуры под которую он скомпилен), но тут уж никуда не деться - драйвер к устройству, так или иначе, должен присутствовать. svgalib и старые иксы носили драйверы с собой, новые иксы надеются что они есть в ОС и что у них какое-то определённое api.

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

То, что прога будет работать на любой ОС, которая сможет загрузить её в память - это определённо хорошо.

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

а) Есть ли в этом строгая необходимость в 2024?

б) svgalib судя по всему работает только на линуксе и на фряхе. Где тут кроссплатформа?

a1ba
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.