Skip to content

aantn/smag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smag - show me a graph!

Easily create graphs from cli commands and view them in the terminal. Like the watch command but with a graph of the output.

Demo

Table of Contents

Install 💿

Install from source

git clone https://github.com/aantn/smag.git
cargo install --path .

Install from binaries

Binaries for Mac, Windows, and Linux are available under Releases.

Usage

Just run smag [shell_cmd] or smag [cmd1] [cmd2] if you want to graph multiple commands at once. You can control how often the graph updates with the -n flag. You can also graph a derivative of the command's output using -d.

smag can graph any command which outputs an integer or float. Any whitespace before/after the number is trimmed automatically.

Pull requests for more features or fixes are welcome.

Examples

  • Graph number of processes: smag "ps aux | wc -l"
  • Graph number of bash processes and ssh processes as two separate lines: smag "ps aux | grep ssh | wc -l" "ps aux | grep bash | wc -l"
  • Graph number of running Kubernetes pods: smag "kubectl get pods -A | grep Running | wc -l"
  • Graph CPU temperature on Raspberry Pi 5: sudo -v && smag -n 0.5 -y °C "sudo vcgencmd measure_temp | tr -d -c 0-9."

Full Usage

$ smag --help
smag 0.6.0
Show Me A Graph - Like the `watch` command but with a graph of previous values.

USAGE:
    smag [FLAGS] [OPTIONS] <cmds>...

FLAGS:
    -d, --diff       Graph the diff of subsequent command outputs
        --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -h, --history <buffer-size>          Specify number of points to 'remember' and graph at once for each commands
                                         [default: 100]
    -n, --interval <polling-interval>    Specify update interval in seconds. [default: 1.0]
    -y, --y-label <y-label>              Label/units for y-axis (e.g. 'MB', 'Seconds') [default: ]

ARGS:
    <cmds>...    Command(s) to run

Inspiration

smag was inspired and based on code from the wonderful gping tool by Tom Forbes

Other tools

I also work on Robusta - better Prometheus based alerts for Kubernetes.