Linux gives you all sorts of ways of keeping an eye on what’s going on your server. Here are several that I find useful. Read my post on apt-get to get any of these that may not be installed on your computer.
The grand-daddy of them all is top
This is like Task Manager on Windows or Activity Monitor on Mac. It gives you a quick list of all the processes that are running on your computer, how much RAM and processor power they’re using, and how long they’ve been running for.
top, however has a pretty ugly output format, so it’s good that there are several better alternatives.
My preferred tool is htop
, which gives a better visual display, including a nice bar-chart showing CPU usage on all your cores, and the ability to sort by CPU, memory usage etc.
CPU[|| 1.3%] Tasks: 44, 46 thr; 1 running
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 332/987MB] Load average: 0.00 0.01 0.05
Swp[| 0/1021MB] Uptime: 1 day, 13:00:40
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
24133 trevor 20 0 26420 2756 1456 R 0.7 0.3 0:00.57 htop
1030 root 20 0 91728 4412 3572 S 0.0 0.4 2:21.86 /usr/sbin/vmtoolsd
1051 postgres 20 0 129M 5056 3628 S 0.0 0.5 0:24.74 postgres: writer process
So what’s making my disk thrash?
htop tells us what processes are using memory and processing power. To see what’s using I/O, use iotop
. This needs to be run as root:
$ sudo apt-get install iotop
$ sudo iotop
which gives you a list of which processes are reading and writing to disk.
But what’s using my network connection?
Likewise, we can monitor network usage using iftop
$ sudo apt-get install iftop
$ sudo iftop
which shows the open connections on your machine and how much data is being passed through them.
An alternative to iftop
is nethogs
which shows you which processes are responsible for data being passed over your network connections.
I also find netstat
useful in these situations. netstat
can do a lot, but one way I find myself using it a lot is
$ netstat -plnt
which means ‘show me all the processes on this machine that are listening for TCP/IP connections, and which port they are listening on’. This is very helpful when you’re setting up a machine and you want to verify that, say, your webserver or database server is running correctly.
Linux gives you many, many ways to see what’s going on on your system, and we’ve only scratched the surface her. Check out the rest of my technology toolkit posts: