How to Use Free Command on Linux

Free Command on Linux

Welcome to our comprehensive guide on using the ‘free‘ command in Linux. This powerful tool provides invaluable insights into your system’s memory usage and can be a crucial asset in maintaining your Linux server or personal machine’s performance. Whether you are a seasoned Linux administrator or a novice user, this guide will walk you through the ins and outs of the ‘free’ command, helping you harness its full potential.

In the dynamic realm of Linux, efficient memory management is paramount. Understanding how your system allocates and utilizes memory is the first step towards optimizing its performance. The ‘free‘ command is a fundamental tool for monitoring memory usage in Linux. This guide will equip you with the knowledge to wield it effectively.

Understanding Memory in Linux

Before diving into the ‘free‘ command, let’s build a solid foundation by understanding the key concepts related to memory in Linux.

RAM (Random Access Memory) Explained

Your system’s RAM is where active programs and data are stored temporarily. It plays a pivotal role in determining the overall speed and efficiency of your system. There are various types of RAM, including DDR3, DDR4, and DDR5, each offering different levels of performance.

Swap Space: What It Is and Why It Matters

Swap space serves as an extension of your system’s RAM. When the physical RAM is fully utilized, data is moved to the swap space, allowing your system to continue running smoothly. We’ll explore how to monitor and manage swap space using the ‘free’ command.

Virtual Memory: A Concept Primer

Linux uses a concept known as virtual memory to efficiently manage RAM and storage. We’ll delve into how Linux manages virtual memory, including the crucial processes of paging and swapping.

Installation and Pre-Requisites

Let’s begin by ensuring you have the ‘free’ command installed and ready for use. If it’s not already present, we’ll guide you through the installation process.

Checking for ‘free’ Command Availability

Before proceeding, verify whether the ‘free’ command is available on your system. Open your terminal and execute:

which free

Installing ‘free’ if Not Present

If the ‘free‘ command is not found, you’ll need to install it. Depending on your Linux distribution, use the appropriate package manager:


sudo apt install procps

Red Hat/CentOS:

sudo dnf install procps-ng

Accessing ‘free’ as a Superuser

To get the most comprehensive memory information, it’s essential to run the ‘free‘ command as a superuser. Use the ‘sudo’ command to gain the necessary privileges:

Syntax and Usage of the ‘free’ Command

Now that you have ‘free’ installed, let’s explore its syntax and various usage options.

Basic Syntax

The ‘free‘ command’s basic syntax is straightforward:

free [options]

Available Options and Their Significance

The ‘free‘ command offers several options to customize its output to your needs. Each option serves a specific purpose:

‘-b’: Display Memory in Bytes

This option displays memory statistics in bytes. It provides a granular level of detail but may be overwhelming for quick assessments.

‘-k’: Display Memory in Kilobytes (Default)

The default option, ‘-k‘, displays memory statistics in kilobytes. It strikes a balance between detail and readability.

‘-m’: Display Memory in Megabytes

Use ‘-m‘ to view memory statistics in megabytes. This option simplifies the output for easy comprehension.

‘-g’: Display Memory in Gigabytes

When dealing with substantial memory resources, the ‘-g‘ option allows you to view statistics in gigabytes, making it easier to grasp the scale of memory usage.

‘-t’: Display Total Memory

Appending ‘-t‘ to your ‘free’ command provides a summary that includes total memory statistics.

‘-h’: Human-Readable Format

The ‘-h‘ option formats the output in a human-readable format, making it more user-friendly.

Real-World Examples

Let’s dive into real-world scenarios where the ‘free‘ command can be immensely helpful.

Checking Overall Memory Usage

To get an overview of your system’s memory usage, simply run:

free -h

This will display a table with information about total, used, and available memory, both for RAM and swap space.

Monitoring Swap Space

Use the following command to specifically monitor your system’s swap space:

free -h --total

This command provides a concise summary of your system’s swap space usage, including total, used, and available swap memory.

Viewing Total Memory

For a quick look at your system’s total memory (RAM), use the ‘-t‘ option:

This command will display the combined statistics for both RAM and swap space.

Interpretation of ‘free’ Command Output

Understanding the ‘free’ command’s output is crucial for effective memory monitoring. Let’s break down the columns and their significance.

Mem vs. Swap

The ‘free‘ command output is divided into two sections: ‘Mem’ and ‘Swap.’

In the ‘Mem’ section, you’ll find:

  • total: The total amount of physical RAM in your system.
  • used: The amount of RAM currently in use.
  • free: The amount of unused RAM.
  • shared: Memory used by shared libraries.
  • buff/cache: Memory used by buffers and cache.
  • available: An estimate of how much memory is available for starting new applications.

In the ‘Swap’ section, you’ll find:

  • total: The total swap space available.
  • used: The amount of swap space currently in use.
  • free: The amount of unused swap space.

Advanced Usage and Troubleshooting

Now that you’re familiar with the basics, let’s explore advanced usage and troubleshooting techniques with the ‘free’ command.

Analyzing Memory Usage Trends Over Time

The ‘free’ command provides a snapshot of your system’s memory at a specific moment. To monitor memory usage trends over time, you can create scripts to run ‘free’ at regular intervals and log the results.

while true; do
free -m >> memory_usage.log
sleep 60 # Log data every minute

This script logs memory usage data in megabytes every minute. You can adjust the sleep interval to your preferred frequency.

Setting Up Automatic Memory Monitoring

To automate memory monitoring and receive alerts when thresholds are breached, tools like Nagios or Zabbix can be integrated with ‘free’ command outputs. These tools allow you to set up notifications for critical memory levels, ensuring proactive system maintenance.

Detecting and Addressing Memory-Related Issues

Memory-related issues can impact system performance significantly. The ‘free’ command can help you identify and resolve these issues.

Identifying Memory-Hogging Processes

If you notice unusually high memory usage, you can use the ‘top’ command or ‘htop‘ for a more user-friendly interface to identify processes consuming excessive memory. Once identified, you can take appropriate action, such as terminating or optimizing these processes.

Clearing Cached Memory

Cached memory is used to store frequently accessed data for quicker retrieval. In some cases, cached memory can become excessive and impact system performance. You can clear cached memory using the following command:

sync; echo 3 > /proc/sys/vm/drop_caches

Expanding Swap Space

If you frequently encounter swap space exhaustion, consider increasing your swap space size. This involves creating a swap file or partition, which can be done following your distribution’s guidelines.

Best Practices for Efficient Memory Management

Efficient memory management is vital for system stability. Some best practices include:

  • Regularly monitoring memory usage with ‘free.’
  • Adjusting application memory allocations to fit your system’s capabilities.
  • Periodically reviewing and optimizing running processes.
  • Ensuring your swap space is appropriately sized.

Integrating ‘free’ with Monitoring Tools

For larger-scale systems or server environments, integrating ‘free‘ command outputs with monitoring tools are crucial. This section provides an overview of how to achieve this integration.

Using ‘free’ in Shell Scripts

To incorporate ‘free‘ command data into your shell scripts for further analysis or actions, you can use command substitution. Here’s an example of a script that sends an alert when free memory falls below a specified threshold:

THRESHOLD=1024 # Set your desired threshold in MB
FREE_MEMORY=$(free -m | awk 'NR==2{print $4}')
if [ "$FREE_MEMORY" -lt "$THRESHOLD" ]; then
echo "Low memory alert: Free memory is below ${THRESHOLD}MB"
# Add your alert mechanism here (e.g., sending an email)

Integration with Monitoring Solutions (e.g., Nagios)

Nagios is a widely used monitoring system that can be configured to check the output of the ‘free‘ command and alert you when specific conditions are met. This involves defining custom Nagios plugins or using existing ones tailored to ‘free’ command output.

Remote Monitoring and Alerts

For remote monitoring and alerts, tools like Zabbix, Prometheus, or Grafana can be configured to collect ‘free‘ command data from multiple servers and provide centralized monitoring and alerting capabilities.

Security Considerations

As with any system command, it’s crucial to consider security when using the ‘free’ command.

Access Control to ‘free’ Command

Limit access to the ‘free’ command to trusted users or groups by modifying file permissions and user privileges.

Limiting User Privileges

Avoid running the ‘free’ command as a superuser unless necessary. Restricting superuser access minimizes the risk of unintentional system changes.

Securing Sensitive Information

Exercise caution when sharing ‘free’ command output, as it may contain sensitive information about your system. Be mindful of privacy and security concerns.


Congratulations! You’ve now mastered the ‘free’ command in Linux and gained valuable insights into memory management. By understanding how to use ‘free’ effectively, monitor memory trends, and troubleshoot memory-related issues, you can optimize your Linux system’s performance and maintain its reliability.

Remember that memory management is an ongoing process. Regularly monitoring memory usage and staying proactive in addressing issues is key to ensuring your Linux system runs smoothly.

Thank you for embarking on this journey to enhance your Linux skills. We encourage you to explore further and continue your quest for Linux mastery.


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button