The widget iStat Pro allows to monitor different system stats like
- CPU usage
- network bandwidth in/out
- memory usage
- ...
How can I view such system stats in the Terminal?
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.
Sign up to join this communityThe widget iStat Pro allows to monitor different system stats like
How can I view such system stats in the Terminal?
Depending on what you want to see, there are several options on Terminal level:
top
: show running processes, memory usage and similar statsiostat
: show I/O per terminal, device and SPU summery statisticsvm_stat
: show Mach virtual memory statisticsdf
and diskutil list
: report on drive space used and freefs_usage
: show file activity for both disk and networknettop
: display updated information about the network (a bit like top for net I/O)w
: display who is logged in, what they are doing and system loadifconfig
and ipconfig
: network interface and IP protocol detailsMost of these commands have a huge list of options, it's probably best to consult the man pages for details.
I usually rely on top -u -s 10
to identify CPU-hogging processes and fs_usage -f filesys
/fs_usage -f network
to identify processes generating a lot of disk/network load.
The iStats ruby gem lets you see the CPU temperature via the command-line.
$ gem install iStats
$ istats
You can use top
. It'll show CPU & RAM usage together with all the processes. It'll also show you network packets in/out, and discs data read/written.
The above are great commands. Also, I like to use
$ du -ks *
To show how much disk space all the folders below my current directory are using.
This command lists the top 10 directories in order of size:
$ du -sh * | sort -nr | head -10
For an overall system stats tool, I like the python glances better than top:
https://nicolargo.github.io/glances/
This is how you can install it on Debian/Ubuntu:
$ sudo apt-get install glances
This is how you can install it on CentOS/Red Hat:
# yum install glances
If you are having network problems, especially with a server exposed to the Internet, lsof(1) can be extremely useful. It lists all open files.
For example, lsof | fgrep '/Library/WebServer/
will show you all the files that are open on your web server. I've been using this a lot to find and ban "leeches" and "bots" who are reducing my bandwidth by automatically sucking down file after file.
My preferred way to see CPU usage with a single command that returns instantly is
ps -axro pcpu | awk '{sum+=$1} END {print sum}'
-ax
: all processes, including non-terminal processes and ones you don't own.
-r
: sort by cpu usage
-o pcpu
: only output the %cpu field. %cpu is a 1-minute average of the process, but will only average over the lifetime of the process if its lifetime is <1min.
awk
: sum the first column in each line and print the sum at the end.
This is a per-core CPU metric, so on a 12 core CPU you can get up to 1200; you're not capped at 100.
Here are two commands for determining your local and public IP:
ipconfig getifaddr en1
This is when using Wi-Fi. For ethernet use en0
.
curl whatismyip.org
en0
. You can find out what it is with networksetup -listallhardwareports | grep -E '(Wi-Fi|AirPort)' -A 1 | grep -o "en."
.
– Lri
Feb 23 '12 at 23:05