- Get total size of my hard drive in Linux, using the command line, without root permissions?
- 7 Answers 7
- How to Check Disk Space in Linux
- Check Linux Disk Space Using df Command
- Display Usage in Megabytes and Gigabytes
- Understanding the Output Format
- Display a Specific File System
- Display File Systems by Type
- Display Size in 1000 Instead of 1024
- Check Disk Space in Linux With du Command
Get total size of my hard drive in Linux, using the command line, without root permissions?
I’m trying to find out the total size of my hard drive using df -h , but it prints the size of each partition and requires sudo . Is there any way to get total size of my hard drive using the command line, without requiring root permission?
Note: Using df is imprecise if the disk has unpartitioned space, not all partitions are mounted (e.g., some Windows partitions on the same drive) or some partitions are not mounted directly but indirectly through RAID, LVM or LUKS (encryption). It will also miss the swap partition(s). So I recommend not to use df for finding out the HDD size.
7 Answers 7
A hacky way is to bypass the need for sudo by reading out the system log with:
Please note that this might not be ideal, so your mileage may vary.
This answer would be so much better if it explained what to expect or what is required for the command to print the desired information. In case «somebody’s mileage varies» they may not recognize it. This has happened at least once.
what’s expected is details of the drive as the question asked, but it’s using log messages that may vary between systems so it’s not possible to give guidance beyond suggesting to try it. On most systems it will give the information requested most of the time.
In my machine, it did not return the hard disk I have, but instead returns [23629.376563] sd 6:0:0:0: [sdb] 83886080 512-byte logical blocks: (42.9 GB/40.0 GiB)
If you want the size in bytes and only the value e.g. for scripting:
lsblk -b --output SIZE -n -d /dev/sdX 12220202
-b: Output in bytes.
-n: No headings. We only want the pure number value.
—output SIZE: Only print the size-column.
-d /dev/sdXn: The device which size we want to know. X is e.g. d, n is e.g, 1 for first partition of disk d.
- root privileges are not needed
- grep is not needed
- lsblk is available on most linux systems
@AlienDrew I do see that. In the case where your comment no longer applies, you can simply delete it. I’ll delete mine, everything stays cleaner.
But the size is in block-based unit
I found this answer here.
Other solutions here.
Or you can try udisks
udisks --show-info /dev/sda | egrep "^[[:space:]]*size" | awk ''
If you want to use that information in a script for example, using
sudo blockdev --getsz /dev/sda
might be easier than fdisk or hdparm as it only gives you the relevant information (just multiply by 512). However, it will also require sudo.
You could of course change the configuration of sudo such that it allows to execute this specific command without asking for the password (I guess blockdev —getsz is pretty safe even when executed by a normal non-privileged user).
This would be done by adding the following line to /etc/sudoers :
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
When you edit this file, be sure to use the command sudo visudo and not your usual editor. Otherwise it is very easy to make a syntax error, which would result in not being able to use sudo anymore (you would have to reboot into rescue mode to fix this).
How to Check Disk Space in Linux
Managing disk space on a Linux server is an important task. For example, package manager applications notify you how much disk space will be required for an installation. For that information to be meaningful, you should know how much space your system has available.
In this tutorial, learn how to use the df command to check disk space in Linux and the du command to display file system disk space usage.
- A Linux-based system
- A terminal window / command line
- A user account with sudo or root privileges
Check Linux Disk Space Using df Command
You can check your disk space simply by opening a terminal window and entering the following:
The df command stands for disk free, and it shows you the amount of space taken up by different drives. By default, df displays values in 1-kilobyte blocks.
Display Usage in Megabytes and Gigabytes
You can display disk usage in a more human-readable format by adding the -h option:
This displays the size in kilobytes (K), megabytes (M), and gigabytes (G).
Understanding the Output Format
The df command lists several columns:
Filesystem Size Used Avail Use% Mounted on udev 210M 0 210M 0% /dev tmpfs 49M 1004K 48M 3% /run /dev/sda2 7.9G 4.3G 3.2G 58% /
Your output may have more entries. The columns should be self-explanatory:
- Filesystem – This is the name of each particular drive. This includes physical hard drives, logical (partitioned) drives, and virtual or temporary drives.
- Size– The size of the filesystem.
- Used – Amount of space used on each filesystem.
- Avail – The amount of unused (free) space on the filesystem.
- Use% – Shows the percent of the disk used.
- Mounted on – This is the directory where the file system is located. This is also sometimes called a mount point.
The list of filesystems includes your physical hard drive, as well as virtual hard drives:
- /dev/sda2 – This is your physical hard drive. It may be listed as /sda1, /sda0, or you may even have more than one. /dev stands for device.
- udev– This is a virtual directory for the /dev directory. This is part of the Linux operating system.
- tmpfs – You may have several of these. These are used by /run and other Linux processes as temporary filesystems for running the operating system. For example, the tmpfs /run/lock is used to create lockfiles. These are the files that prevent multiple users from changing the same file at the same time.
Display a Specific File System
The df command can be used to display a specific file system:
You can also use a backslash:
This displays the usage on your primary hard drive. Use the mount point (in the Mounted on column) to specify the drive you want to check.
Note: The df command only targets a full filesystem. Even if you specify an individual directory, df will read the space of the whole drive.
Display File Systems by Type
To list all file systems by type, use the command:
This lists drives with the ext4 type, in human-readable format.
Display Size in 1000 Instead of 1024
You can display disk usage in units of 1000 instead of 1024:
This can address a point of confusion in storage technology. Hard drive manufacturers sell hard drives in sizes based on 1000 bytes = 1 kilobyte.
However, operating systems divide that space up so that 1024 bytes = 1 kilobyte. Because of this, a 1000-gigabyte hard drive ends up with roughly 930 gigabytes of usable storage.
Note: Check out our overview of the Linux free command used to check total, used, shared, free, and available memory and swap space.
Check Disk Space in Linux With du Command
The du command displays disk usage. This tool can display disk usage for individual directories in Linux, giving you a finer-grained view of your disk usage. Use it to display the amount of space used by your current directory:
Like the df command, you can make du human-readable:
It displays a list of the contents of the current directory, and how much space they’re using. You can simplify the display with the -s option:
This shows how much space the current directory uses.
To specify the directory or file, check use the following options:
With the second command, you may have noticed a permission denied error message. This means the current user doesn’t have the privileges to access certain directories. Use the sudo command to elevate your privileges:
Note: If you’re working on CentOS Linux, you may need to use the su command to switch to the root user to access protected directories.
You should now understand how to use df and du commands to check disk space on your Linux system. Remember, to display a complete list of options, use either df —help or du —help .
Check out our article on how to use fsck command to run a filesystem check as preventive maintenance or when there is an issue with your system.