free Command in Linux with examples

15 May, 2019
While using LINUX there might come a situation when you are willing to install a new application (big in size) and you wish to know for the amount of free memory available on your system. In LINUX, there exists a command line utility for this and that is free command which displays the total amount of free space available along with the amount of memory used and swap memory in the system, and also the buffers used by the kernel.
This is pretty much what free command does for you.Syntax:
$free [OPTION]

OPTION : refers to the options 
compatible with free command.

As free displays the details of the memory related to your system , its syntax doesn’t need any arguments to be passed but only options which you can use according to your wish.
Using free Command
You can use the free command as:
// using free command
$free
             total       used       free     shared    buffers     cached
Mem:        509336     462216      47120          0      71408     215684
-/+ buffers/cache:     175124     334212
Swap:       915664      11928     903736

/*free command without any
option shows the used
and free space of swap 
and physical memory in KB */

When no option is used then free command produces the columnar output as shown above where column:
total displays the total installed memory (MemTotal and SwapTotal i.e present in /proc/meminfo).used displays the used memory.free displays the unused memory.shared displays the memory used by tmpfs(Shmen i.epresent in /proc/meminfo and displays zero in case not available).buffers displays the memory used by kernel buffers.cached displays the memory used by the page cache and slabs(Cached and Slab available in /proc/meminfo).buffers/cache displays the sum of buffers and cache.
total displays the total installed memory (MemTotal and SwapTotal i.e present in /proc/meminfo).
used displays the used memory.
free displays the unused memory.
shared displays the memory used by tmpfs(Shmen i.epresent in /proc/meminfo and displays zero in case not available).
buffers displays the memory used by kernel buffers.
cached displays the memory used by the page cache and slabs(Cached and Slab available in /proc/meminfo).
buffers/cache displays the sum of buffers and cache.
Options for free command
-b, – -bytes : It displays the memory in bytes.
-k, – -kilo : It displays the amount of memory in kilobytes(default).
-m, – -mega : It displays the amount of memory in megabytes.
-g, – -giga : It displays the amount of memory in gigabytes.
– – tera : It displays the amount of memory in terabytes.
-h, – -human : It shows all output columns automatically scaled to shortest three digit unit and display the units also of print out. The units used are B(bytes), K(kilos), M(megas), G(gigas), and T(teras).
-c, – -count : It displays the output c number of times and this option actually works with -s option.
-l, – -lohi : It shows the detailed low and high memory statistics
-o, – -old : This option disables the display of the buffer adjusted line.
-s, – -seconds : This option allows you to display the output continuously after s seconds delay. In actual, the usleepsystem call is used for microsecond resolution delay times.
-t, – -total : It adds an additional line in the output showing the column totals.
– -help : It displays a help message and exit.
-V, – -version : It displays version info and exit.
Using free command with options
1. Using -b : It just displays the output in unit bytes.
//using free with -b

$free -b
             total       used       free     shared    buffers     cached
Mem:     521560064  474198016   47362048          0   73826304  220983296
-/+ buffers/cache:  179388416  342171648
Swap:    937639936   12210176  925429760

/*everything now
displayed is in bytes */

2. Using -k : This option displays the result in kilobytes.
//using free with -k

$free -k
             total       used       free     shared    buffers     cached
Mem:        509336     463084      46252          0      72104     215804
-/+ buffers/cache:     175176     334160
Swap:       915664      11924     903740

/*no change in output
if compared to only free
command output cause this 
is the by default format
that free uses for the 
result */

3. Using -m : This option displays the result in megabytes.
//using free with -m

$free -m
             total       used       free     shared    buffers     cached
Mem:           497        452         45          0         70        210
-/+ buffers/cache:        171        326
Swap:          894         11        882

/*everything now
displayed is in megabytes */

4.using -g : This option displays the result in gigabytes.
//using free with -g

$free -g
             total       used       free     shared    buffers     cached
Mem:             0          0          0          0          0          0
-/+ buffers/cache:          0          0
Swap:            0          0          0

/*everything now
displayed is in gigabytes */

5. Using -t (total) : This option displays an additional line containing the total of the total, used and free columns.
//using free with -t

$free -t
             total       used       free     shared    buffers     cached
Mem:        509336     463332      46004          0      72256     215804
-/+ buffers/cache:     175272     334064
Swap:       915664      11924     903740
Total:     1425000     475256     949744

/*the line containing
total is added to the 
output when -t is used*/

6. Using -s and -o: This option allows you to display the output of free command after a set time gap given by the user. This option requires a numeric value to be passed with it that is treated as the number of seconds after which the output will be displayed.
//using free with -s

$free -s 3 -c 3
             total       used       free     shared    buffers     cached
Mem:        509336     469604      39732          0      73260     216068
-/+ buffers/cache:     180276     329060
Swap:       915664      11924     903740

             total       used       free     shared    buffers     cached
Mem:        509336     468968      40368          0      73268     216060
-/+ buffers/cache:     179640     329696
Swap:       915664      11924     903740

             total       used       free     shared    buffers     cached
Mem:        509336     469092      40244          0      73272     216068
-/+ buffers/cache:     179752     329584

/*the above output will
be displayed (only 3 times)
after every 3 seconds */

Now, with -s you can only specify the time gap but not the number of times you want the output to be displayed. For this, -c is used along with -s specifying the number of times the output will be displayed.
7. Using -o : This option makes the buffer/cache line go away from the output as shown below.
//using free with -o

$free -o
              total       used       free     shared    buffers     cached
Mem:        509336     463588      45748          0      72376     215856
Swap:       915664      11924     903740

/*now the output
doesn't have the
buffer line in it */

That’s all about the free command.
linux-command
Linux-misc-commands
Linux-Unix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
ZIP command in Linux with examples
tar command in Linux with examples
curl command in Linux with Examples
SORT command in Linux/Unix with examples
'crontab' in Linux with Examples
TCP Server-Client implementation in C
Conditional Statements | Shell Script
Tail command in Linux with examples
UDP Server-Client implementation in C
Docker - COPY Instruction