📖 Scenario: You are a system administrator who wants to keep an eye on disk space usage on a server. If disk space usage goes above a certain limit, you want to be alerted so you can take action before the server runs out of space.
🎯 Goal: Build a simple bash script that checks the disk space usage of the root directory and alerts if usage is above a set threshold.
📋 What You'll Learn
Create a variable to store the disk usage percentage of the root directory
Create a variable to store the threshold percentage for alerting
Write an if statement to compare disk usage with the threshold
Print an alert message if disk usage is above the threshold
Print a safe message if disk usage is below or equal to the threshold
💡 Why This Matters
🌍 Real World
System administrators often need to monitor disk space to prevent servers from running out of storage, which can cause crashes or data loss.
💼 Career
Knowing how to write simple monitoring scripts is a key skill for DevOps engineers and system administrators to maintain healthy infrastructure.
Progress0 / 4 steps
1
Get disk usage percentage
Create a variable called disk_usage that stores the disk usage percentage of the root directory / using the df command and awk. Extract only the number without the percent sign.
Bash Scripting
Hint
Use df / to get disk info for root, then use awk to get the 5th column of the second line and remove the percent sign.
2
Set alert threshold
Create a variable called threshold and set it to 80 to represent 80% disk usage as the alert limit.
Bash Scripting
Hint
Just assign the number 80 to a variable named threshold.
3
Compare disk usage with threshold
Write an if statement that compares disk_usage with threshold. If disk_usage is greater than threshold, print "Disk space is above threshold!". Otherwise, print "Disk space is within safe limits.".
Bash Scripting
Hint
Use [ "$disk_usage" -gt "$threshold" ] inside an if statement to compare numbers.
4
Run the script and display result
Run the script and print the alert or safe message based on the current disk usage.
Bash Scripting
Hint
Just run the script as is. It will print one of the two messages depending on disk usage.
Practice
(1/5)
1. What is the main purpose of a disk space monitoring script in a server environment?
easy
A. To check disk usage and alert when space is low
B. To delete files automatically when disk is full
C. To speed up the disk read/write operations
D. To backup all files to another disk
Solution
Step 1: Understand the script's goal
The script's goal is to monitor disk usage to prevent running out of space.
Step 2: Identify the correct purpose
Among the options, only checking disk usage and alerting matches the monitoring function.
Final Answer:
To check disk usage and alert when space is low -> Option A
Quick Check:
Disk monitoring = alert on low space [OK]
Hint: Monitoring means checking and alerting, not deleting or backing up [OK]
Common Mistakes:
Confusing monitoring with automatic deletion
Thinking it speeds up disk operations
Assuming it performs backups
2. Which of the following is the correct syntax to get the disk usage percentage of the root partition using df and awk in bash?
easy
A. df -h / | awk '{print $5}'
B. df -h / | sed '2q;d'
C. df / | awk 'NR==1 {print $5}'
D. df -h / | awk 'NR==2 {print $5}'
Solution
Step 1: Understand df -h / output
The command shows disk usage for root; the second line (NR==2) has the data.
Step 2: Use awk 'NR==2 {print $5}' to get usage percent
This prints the 5th column (usage %) from the second line, which is correct.
Final Answer:
df -h / | awk 'NR==2 {print $5}' -> Option D
Quick Check:
Second line, fifth column = usage percent [OK]
Hint: Use NR==2 to skip header line in df output [OK]
Common Mistakes:
Printing all lines instead of second line
Using NR==1 which is header line
Using sed incorrectly to get the line
3. Given this script snippet:
usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$usage" -gt 80 ]; then
echo "Warning: Disk usage is above 80%"
else
echo "Disk usage is normal"
fi
What will be the output if the disk usage is 75%?
medium
A. Disk usage is normal
B. No output
C. Syntax error in script
D. Warning: Disk usage is above 80%
Solution
Step 1: Extract usage value
The script removes % sign and stores 75 in usage variable.
Step 2: Compare usage with 80
75 is not greater than 80, so the else branch runs.
Final Answer:
Disk usage is normal -> Option A
Quick Check:
75 <= 80 means normal usage [OK]
Hint: Compare numeric values after removing % sign [OK]
Common Mistakes:
Forgetting to remove % sign before comparison
Using string comparison instead of numeric
Misreading the if condition
4. Identify the error in this disk space check script snippet:
usage=$(df / | awk 'NR==2 {print $5}')
if [ $usage -gt 90 ]; then
echo "Disk almost full"
fi
What problem will occur when running this script?
medium
A. No error, script runs fine
B. Syntax error due to missing quotes around $usage
C. df command will fail
D. awk command syntax error
Solution
Step 1: Check variable usage in test
The variable $usage contains a value like '85%'. Without quotes, test may fail if value has spaces or special chars.
Step 2: Identify missing % removal and quotes
Also, % sign is not removed, causing numeric comparison error. Missing quotes cause syntax error.
Final Answer:
Syntax error due to missing quotes around $usage -> Option B
Quick Check:
Always quote variables in test to avoid syntax errors [OK]
Hint: Quote variables and remove % before numeric comparison [OK]
Common Mistakes:
Not quoting variables in if test
Not removing % sign before numeric test
Assuming df or awk commands fail
5. You want to create a bash script that checks all mounted partitions and sends an alert if any partition exceeds 85% usage. Which approach correctly implements this?
hard
A. Use du command on root directory and alert if usage exceeds 85%
B. Run df -h once and alert if total disk usage exceeds 85%
C. Use a loop over df -h output lines, extract usage %, compare with 85, and echo alert if exceeded
D. Check only root partition usage and ignore others
Solution
Step 1: Understand requirement to check all partitions
We must check each mounted partition's usage, not just total or root.
Step 2: Loop through df -h output lines and compare usage
Extract usage percent per line, compare with 85, and alert if exceeded.
Final Answer:
Use a loop over df -h output lines, extract usage %, compare with 85, and echo alert if exceeded -> Option C
Quick Check:
Loop and compare each partition usage [OK]
Hint: Loop through df output lines to check each partition [OK]
Common Mistakes:
Checking only total or root partition
Using du instead of df for disk usage
Not looping through all partitions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.