Ever needed a quick way to check your system’s vital stats without memorizing a dozen different commands?
I created a simple bash script that displays all the essential system information in one clean output.
What It Does
The script displays:
- Hostname and current date
- System uptime
- Linux distribution and kernel version
- CPU model and core count
- Memory usage (total, used, free)
- Disk space utilization
- Network information (IPv4, MAC address, gateway, DNS)
The Script
Here’s the complete script:
#!/bin/bash
# Description: Display system information
echo "=== System Info ==="
echo "Hostname: $(hostname)"
echo "Date: $(date)"
echo "Uptime: $(uptime -p | sed 's/up //')"
echo "Distro: $(lsb_release -ds 2>/dev/null || grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)"
echo "Kernel: $(uname -r)"
# CPU information
echo "CPU: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
# Memory information
echo "Mem: $(free -h | awk '/^Mem:/ {print $2 " total, " $3 " used, " $4 " free"}')"
# Disk information
echo "Disk: $(df -h / | awk 'NR==2 {print $2 " total, " $3 " used, " $4 " free (" $5 " used)"}')"
# IP address (primary interface)
echo "IPv4: $(hostname -I | awk '{print $1}')"
# MAC address (primary interface)
echo "MAC: $(ip link show | awk '/ether/ {print $2; exit}')"
# Default Gateway
echo "Gateway: $(ip route | grep default | awk '{print $3}')"
# DNS Server (current)
echo "DNS: $(resolvectl status | grep 'Current DNS Server:' | awk '{print $4}')"
Sample Output
=== System Info ===
Hostname: cato
Date: Mon Feb 2 18:33:38 CET 2026
Uptime: 2 days, 2 hours, 55 minutes
Distro: Ubuntu 24.04.3 LTS
Kernel: 6.8.0-94-generic
CPU: Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
Mem: 31Gi total, 739Mi used, 29Gi free
Disk: 100G total, 45G used, 50G free (45% used)
IPv4: 10.0.39.1
MAC: 00:50:56:9c:cd:b1
Gateway: 10.0.39.254
DNS: 1.1.1.1
How to Use
Save the script to a file (e.g., sysinfo), make it executable, and run it:
chmod +x sysinfo
./sysinfo
Key Commands Explained
uptime -p- Human-readable uptime formatlscpu- Detailed CPU informationfree -h- Memory usage in human-readable formatdf -h- Disk space usageip route- Network routing informationresolvectl status- DNS resolver configuration
This script has been validated with shellcheck to follow bash best practices, so you can be confident it’s clean and efficient.