Note
The master branch code and readme may include features that are not yet released. For the official, stable version and its documentation, please refer to the crates.io page.
- pleasing to the eye thanks to a nice table view
- filterable and sortable output
- interactive killing of processes
- JSON and custom formattable output
- from
netstat -tulpn
tosomo -l
- cross-platform support for Linux and macOS
- you can find all features further down
If you use a Debian OS go to releases and download the latest .deb release.
cargo install somo
Most of the time you will want to run this in sudo
mode to see all processes and ports. By default, this is not possible when installed via cargo. But you can create a symlink so the binary can be run as root:
sudo ln -s ~/.cargo/bin/somo /usr/local/bin/somo
sudo somo # this works now
Warning: This is the cutting-edge development version and may be unstable or contain incomplete features. You can install it via cargo directly from the GitHub repository.
cargo install --git https://github.com/theopfr/somo
You can build and use the development version using Nix with Flakes.
nix build 'github:theopfr/somo?dir=nix'
sudo ./result/bin/somo
To run somo just type:
sudo somo
Somo supports the following features:
You can use the following flags to filter based on different attributes:
filter flag | description | value |
---|---|---|
--tcp, -t |
filter by TCP connections | - |
--udp, -u |
filter by UDP connections | - |
--proto |
deprecated – use --tcp / --udp instead |
tcp or udp |
--port, -p |
filter by a local port | port number, e.g 5433 |
--remote-port |
filter by a remote port | port number, e.g 443 |
--ip |
filter by a remote IP | IP address e.g 0.0.0.0 |
--program |
filter by a client program | program name e.g chrome |
--pid |
filter by a PID | PID number, e.g 10000 |
--open, -o |
filter by open connections | - |
--listen, -l |
filter by listening connections | - |
--established, -e |
filter by established connections | - |
--exclude-ipv6 |
don't list IPv6 connections | - |
To get a smaller, more compact table use the --compact, -c
flag.
With the --kill, -k
flag you can choose to kill a process after inspecting the connections using an interactive selection option.
Using the --json
flag you can choose to retrieve the connection data in JSON format.
You can also define a custom output format using the --format
flag, for example:
somo --format "PID: {{pid}}, Protocol: {{proto}}, Remote Address: {{remote_address}}" # attributes must be specified in snake_case
In the format-string, the attributes have to be specified in snake_case.
The --sort, -s
flag can be used to sort the table after a specific column ascending. For example:
somo --sort pid # column names must be specified in snake_case
To get a descending order, you can use the --reverse, -r
flag.
Somo supports shell completions for bash, zsh, fish, and elvish. Choose your shell:
mkdir -p ~/.local/share/bash-completion/completions
somo generate-completions bash > ~/.local/share/bash-completion/completions/somo
mkdir -p ~/.local/share/zsh/site-functions
somo generate-completions zsh > ~/.local/share/zsh/site-functions/_somo
echo 'fpath=(~/.local/share/zsh/site-functions $fpath)' >> ~/.zshrc
echo 'autoload -U compinit && compinit' >> ~/.zshrc
mkdir -p ~/.config/fish/completions
somo generate-completions fish > ~/.config/fish/completions/somo.fish
mkdir -p ~/.config/elvish/lib
somo generate-completions elvish > ~/.config/elvish/lib/somo.elv
echo 'use somo' >> ~/.config/elvish/rc.elv
Somo currently supports: