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?

enter image description here

up vote 56 down vote accepted

Depending on what you want to see, there are several options on Terminal level:

  • top: show running processes, memory usage and similar stats
  • iostat: show I/O per terminal, device and SPU summery statistics
  • vm_stat: show Mach virtual memory statistics
  • df and diskutil list: report on drive space used and free
  • fs_usage: show file activity for both disk and network
  • nettop: 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 load
  • ifconfig and ipconfig: network interface and IP protocol details

Most 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.

  • This is what I wanted! Thanks. – gentmatt Feb 5 '12 at 19:25
  • @JMY1000 LOL, I actually like the idea of a process hugging the CPU :-) Thanks for the edit. – nohillside Jun 17 '16 at 13:51
  • @patrix Ah, the good ol' hug of death. – JMY1000 Jun 18 '16 at 13:00

The iStats ruby gem lets you see the CPU temperature via the command-line.

Installation

$ gem install iStats

Usage

$ istats

Screenshot

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.

  • 2
    And with man top you can see how to customize the output. – Rene Larsen Feb 5 '12 at 13:13

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:

Local IP

ipconfig getifaddr en1

This is when using Wi-Fi. For ethernet use en0.

Public IP

curl whatismyip.org
  • 1
    On current MacBook Airs (which don't have an ethernet port) the Wi-Fi device code is en0. You can find out what it is with networksetup -listallhardwareports | grep -E '(Wi-Fi|AirPort)' -A 1 | grep -o "en.". – user495470 Feb 23 '12 at 23:05

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.