Bash Shell

While it’s usually pretty clear if your system is running out of memory or using too much CPU time, disk usage is another key metric that can sneak up on you over time if you leave your server unattended. You’ll want to regular check your disk usage using these commands.

Checking Disk Usage On Linux

The utility used to quickly check disk usage on almost all Linux systems is df, which stands for “disk filesystems.” It simply prints out a list of all the filesystems on your system.

df -hT

This command here is invoked with two flags, -h for “human readable,” which prints out byte numbers in KB, MB, and GB, and -T, which displays the type of the filesystem.

df will print out each filesystem alongside the size, how much is used and available, and where it’s mounted to on your system.

You’ll quickly notice that you probably have a lot more “filesystems” than you’d expect. This server only has one solid state drive, but has over 20 filesystems. Most of these are backend stuff used for other programs and services, such as compressed squashfs, virtual tmpfs , and Docker’s overlay systems used for containers.

In this example, ext4 is the real drive, which is obvious because it’s mounted at root, but in multi-drive systems that may not be immediately clear. If you want, you can filter this list by specifying which type you want to see with the lowercase -t flag:

df -hT -t ext4

Or by removing what you don’t want to see manually with the -x flag:

df -hT -x squashfs -x overlay -x tmpfs -x devtmpfs

You can also ask df for info on any specific filesystem, even including wildcards to match multiple systems by name:

df -h /dev/md*

Or, you can ask it for info on a specific mount, which is most useful for quickly getting the info on your root system:

df -h /

Monitoring At a Glance

Most of the time though, you probably don’t want to remember and type a bunch of commands with specific flags. That’s what the glances utility was made for, and we highly recommend giving it a try.

It’s basically a replacement for built-in utilities like top and htop, except it displays a lot of different performance metrics about your system, the disks. It’s not included in most Linux distros by default, but it’s open source and can be installed from pip, given it’s a Python app.

sudo pip install glances

Then simply run the app to open up the glances dashboard:


You’ll find in the lower left corner some info on disk usage, including current I/O speeds, as well as each physical disk’s total usage. Using this, you can easily spot problems with disks filling up before it breaks your system.

There are plenty of other utilities for monitoring your system, but glances checks all the boxes, so it’s a pretty nice tool to have.

Sending Alerts When Your Disk Usage Is Too High

The main problem with command line tools is that they require you to be proactive about checking for problems. But problems can pop up unexpectedly, so it’s good to get notified about them beforehand.

So, the solution is to set up a daily cron job that will run df automatically to check the usage on the root system. It will compare this with a set value, and if it’s greater, it’ll send a message.

CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')

if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}"

You have plenty of options for how to get messages, and it will depend on your preferred contact. The simplest would be to set up the mail utility to send you emails from the command line. You can read our article on setting up Postfix to handle this for you.

A much cooler method is to send yourself a message directly on a messaging platform you’re active on, such as setting up Slack notifications from your server, which can be easily done using webhooks with curl POST requests.

You can read our article on setting up Slack webhooks for disk space alerts to learn more.

RELATED: How to Setup Slack Notifications for Low Disk Space On Your Server

Source link