Install on macOS or Linux with Homebrew:
brew install nyg/jmxsh/jmxsh
Download the release JAR and run it directly:
java -jar jmxsh-<version>.jar
Add the repository and install:
curl -fsSL https://jmx.sh/apt/gpg.asc | sudo gpg --dearmor -o /usr/share/keyrings/jmxsh.gpg
echo "deb [signed-by=/usr/share/keyrings/jmxsh.gpg] https://jmx.sh/apt stable main" | sudo tee /etc/apt/sources.list.d/jmxsh.list
sudo apt update && sudo apt install jmxsh
Connect to any JMX-enabled JVM and explore MBeans interactively with tab completion and command history.
$ java -jar jmxsh-<version>.jar Welcome to jmx.sh, type "help" for available commands. $> open localhost:9999 #Connection to localhost:9999 is opened $> domains #following domains are available JMImplementation java.lang com.example $> bean com.example:type=AppStats #bean is set to com.example:type=AppStats $> get RequestCount #mbean = com.example:type=AppStats: RequestCount = 42; $> run resetStats #calling operation resetStats of mbean com.example:type=AppStats #operation returns: null $> close $> quit
Automate JMX operations with scripts and pipes — perfect for monitoring, alerting, and CI/CD pipelines.
Run commands from a file:
java -jar jmxsh-<version>.jar \
-l localhost:9999 \
--input commands.txt
Pipe commands via stdin:
echo "open localhost:9999 && beans" \
| java -jar jmxsh-<version>.jar -n
| Command | Description |
|---|---|
open <host:port> | Connect to a remote JMX endpoint (RMI) |
open jmxmp://<host:port> | Connect to a remote JMX endpoint (JMXMP) |
open <pid> | Attach to a local JVM by process ID |
domains | List all MBean domains |
beans | List all MBeans (filter by domain with -d) |
bean <name> | Select an MBean for subsequent operations |
info | Show attributes and operations of the selected MBean |
get <attr> | Read an MBean attribute |
set <attr> <value> | Write an MBean attribute |
run <op> [args] | Invoke an MBean operation |
close | Disconnect from the JMX endpoint |
jvms | List local Java processes |
help | Show all available commands |
Tab completion and command history powered by JLine.
Connect via host:port (RMI), jmxmp:// (JMXMP), JMX URL, or local PID.
Browse domains, read/write attributes, invoke operations.
Run multiple commands in one line with &&.
Automate JMX operations via files or piped input.
Silent, brief, or verbose output modes.
Follows the XDG Base Directory spec — keeps your home directory clean.