![]() |
![]()
| ![]() |
![]()
NAME
SYNOPSIS
DESCRIPTION
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:
KEY BINDINGSWhen reading data from a pipe, EXAMPLESCPU usage from vmstat(8) using awk(1) to pick the right column: vmstat -n 1 \ | gawk '{ print 100-int($(NF-2)); fflush(); }' \ | ttyplot CPU usage from sar(1) with title and fixed scale to 100%: sar 1 \ | gawk '{ print 100-int($NF); fflush(); }' \ | ttyplot -s 100 -t "cpu usage" -u "%" Memory usage from sar(1), using perl(1), to pick the right column: sar -r 1 \ | perl -lane 'BEGIN{$|=1} print "@F[5]"' \ | ttyplot -s 100 -t "memory used %" -u "%" Number of processes in running and io blocked state: vmstat -n 1 \ | perl -lane 'BEGIN{$|=1} print "@F[0,1]"' \ | ttyplot -2 -t "procs in R and D state" Load average via uptime(1) and awk(1): { while true; do uptime | gawk '{ gsub(/,/, ""); print $(NF-2) }' sleep 1 done } | ttyplot -t "load average" -s load Ping plot with sed(1): ping 8.8.8.8 \ | sed -u 's/^.*time=//g; s/ ms//g' \ | ttyplot -t "ping to 8.8.8.8" -u ms WiFi signal level in -dBM (higher is worse) using iwconfig(8): { while true; do iwconfig 2>/dev/null \ | grep "Signal level" \ | sed -u 's/^.*Signal level=-//g; s/dBm//g' sleep 1 done } | ttyplot -t "wifi signal" -u "-dBm" -s 90 CPU temperature from proc; { while true; do awk '{ printf("%.1f0, $1/1000) }' \ /sys/class/thermal/thermal_zone0/temp sleep 1 done } | ttyplot -t "cpu temp" -u C Fan speed from sensors(1) using grep(1), tr(1) and cut(1): { while true; do sensors | grep fan1: | tr -s " " | cut -d" " -f2 sleep 1 done } | ttyplot -t "fan speed" -u RPM Bitcoin price chart using curl(1) and jq(1): { while true; do curl -sL https://api.coindesk.com/v1/bpi/currentprice.json \ | jq .bpi.USD.rate_float sleep 600 done } | ttyplot -t "bitcoin price" -u usd Stock quote chart: { while true; do curl -sL https://api.iextrading.com/1.0/stock/googl/price echo sleep 600 done } | ttyplot -t "google stock price" -u usd Prometheus load average via
{ while true; do curl -s http://10.4.7.180:9100/metrics \ | grep "^node_load1 " \ | cut -d" " -f2; sleep 1 done } | ttyplot Network/disk throughput examples
Local network throughput for all interfaces combined from sar(1): sar -n DEV 1 | gawk '{ if($6 ~ /rxkB/) { print iin/1000; print out/1000; iin=0; out=0; fflush(); } iin=iin+$6; out=out+$7; }' | ttyplot -2 -u "MB/s" SNMP network throughput for an interface using
‘ ttg -i 10 -u Mb 10.23.73.254 public 9 \ | gawk '{ print $5,$8; fflush(); }' \ | ttyplot -2 -u Mb/s SNMP network throughput for an interface using snmpdelta(1): snmpdelta -v 2c -c public -Cp 10 \ 10.23.73.254 1.3.6.1.2.1.2.2.1.{10,16}.9 \ | gawk '{ print $NF/1000/1000/10; fflush(); }' \ | ttyplot -2 -t "interface 9 throughput" -u Mb/s Disk throughput from iostat(1): iostat -xmy 1 nvme0n1 \ | stdbuf -o0 tr -s " " \ | stdbuf -o0 cut -d " " -f 4,5 \ | ttyplot -2 -t "nvme0n1 throughput" -u MB/s Rate calculator for counters
SNMP network throughput for an interface using snmpget(1): { while true; do snmpget -v 2c -c public \ 10.23.73.254 1.3.6.1.2.1.2.2.1.{10,16}.9 \ | awk '{ print $NF/1000/1000; }' sleep 10 done } | ttyplot -2 -r -u "MB/s" Local interface throughput using ip(8) and jq(1): { while true; do ip -s -j link show enp0s31f6 \ | jq '.[].stats64.rx.bytes/1024/1024, \ .[].stats64.tx.bytes/1024/1024' sleep 1 done } | ttyplot -r -2 -u "MB/s" Prometheus node exporter disk throughput for /dev/sda: { while true; do curl -s http://10.11.0.173:9100/metrics \ | awk '/^node_disk_.+_bytes_total{device="sda"}/ { printf("%f0, $2/1024/1024); }' sleep 1 done } | ttyplot -r -2 -u MB/s -t "10.11.0.173 sda writes" AUTHORS
Its readme was converted into this manual page by
BUGSBy default in standard in- and output are is buffered. This can be worked around in various ways.
{ echo 1 2 3; sleep 1000; } |
ttyplot When running interactively and non-numeric data is entered (e.g.
some key)
|