I have Ubuntu server 12.04 installed with no GUI. I would like to list my hard drive and it's partitions along with how big each partition is using the command line.
-
did you try my commands ? – nux Mar 08 '14 at 22:06
-
I tried all but inxi because my internet is down right now so I couldn't install it. All the other options were exactly what I was looking for and they each have there own perks, thank you. – Cam Jones Mar 08 '14 at 23:01
-
ok hope you are ok now – nux Mar 08 '14 at 23:03
-
1possible duplicate of How do I view all available HDD's/partitions? – phuclv Aug 04 '15 at 11:20
4 Answers
Here are a few ways:
If you have an MBR partition table:
terdon@oregano ~ $ sudo fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4b66b5d5 Device Boot Start End Blocks Id System /dev/sda1 63 80324 40131 de Dell Utility /dev/sda2 * 81920 30801919 15360000 7 HPFS/NTFS/exFAT /dev/sda3 30801920 194643539 81920810 7 HPFS/NTFS/exFAT /dev/sda4 194643601 976773119 391064759+ f W95 Ext'd (LBA) /dev/sda5 194643603 198836504 2096451 c W95 FAT32 (LBA) /dev/sda6 342951936 960387071 308717568 83 Linux /dev/sda7 198840320 342949887 72054784 83 Linux /dev/sda8 960389120 976773119 8192000 82 Linux swap / Solaris
or sudo sfdidk -l
These do not give particularly human readable output though. The next choices are better.
For both GPT and MBR partition tables:
terdon@oregano ~ $ sudo parted -l Model: ATA ST9500420AS (scsi) Disk /dev/sda: 500GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 41.1MB 41.1MB primary fat16 diag 2 41.9MB 15.8GB 15.7GB primary ntfs boot 3 15.8GB 99.7GB 83.9GB primary ntfs 4 99.7GB 500GB 400GB extended lba 5 99.7GB 102GB 2147MB logical fat32 lba 7 102GB 176GB 73.8GB logical ext4 6 176GB 492GB 316GB logical ext4 8 492GB 500GB 8389MB logical linux-swap(v1) Model: ST950032 5AS (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 500GB 500GB primary ntfs
lsblk
terdon@oregano ~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 39.2M 0 part ├─sda2 8:2 0 14.7G 0 part ├─sda3 8:3 0 78.1G 0 part ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 2G 0 part ├─sda6 8:6 0 294.4G 0 part /home ├─sda7 8:7 0 68.7G 0 part / └─sda8 8:8 0 7.8G 0 part [SWAP] sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part /test sr0 11:0 1 1024M 0 rom
Install
inxi
then runterdon@oregano ~ $ inxi -D Drives: HDD Total Size: 1000.2GB (70.1% used) 1: id: /dev/sda model: ST9500420AS size: 500.1GB 2: id: /dev/sdb model: 5AS size: 500.1GB

- 100,812
Here's couple of other approaches:
lshw
The short version of lshw
conveniently lists the size of disks in the description
sudo lshw -short | awk '/disk|volume/'
/0/1/0.0.0 /dev/sda disk 120GB Radeon R7
/0/1/0.0.0/1 /dev/sda1 volume 111GiB EXT4 volume
/0/2/0.0.0 /dev/cdrom disk DVDRAM GT20N
And for more detailed info use lshw -class volume,disk
udiscsctl
udiscsctl
has info
option which coupled with -b
(for block-device) flag, can show detailed information. Using a simple for loop and awk
, we can make it show partition and size information specifically. Here is my example:
$ for device in /dev/sd* ; do udisksctl info -b $device | awk '/[[:blank:]]Device:/; /Size/' ;done
Device: /dev/sda
Size: 120034123776
Device: /dev/sda1
Size: 120032591872
Size: 120032591872
df command
df
command shows information about all currently mounted filesystems. Again, we can use this command directly, but also clean up the output using awk
df -h | awk 'NR==1 ;/\/dev\/sd*/'
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 110G 68G 37G 66% /
Here we just print the header and use -h flag that makes size be printed in human-readable format
/sys/class/block/sd* files
Inside /sys/class/block/
folder you will find files related to block devices( which typically refer to physical memory devices ) . In particular we want to focus on any file that starts with sd
letters.
For instance, I have one hard drive with only one partition. Thus /sys/class/block/sda
refers to my whole hard-drive, while /sys/class/block/sda1
refers to my Ubuntu partition.
Inside each folder for each device, you will find the size
file , which lists how many blocks of 512 MB there are on the device. So the true size is number of blocks x 521
.
Again, with little command line magic, we get:
$ for device in /sys/class/block/sd*; do printf "%s " $device; bc <<< "$(cat $device/size)*512" ; done
/sys/class/block/sda 120034123776
/sys/class/block/sda1 120032591872
Or a bit shorter with awk
:
$ awk '{print substr(FILENAME,18)" "$1*512}' /sys/class/block/sd*/size
sda/size 120034123776
sda1/size 120032591872

- 105,154
- 20
- 279
- 497
In terminal :
sudo fdisk -l
Type your password.
lsblk
command :
-
2Why not copy paste instead of posting the images? That would fasten up loading this answer. – jobin Mar 08 '14 at 22:39
-
-
I agree with you about the images thing, my brain just likes them better. – Cam Jones Mar 08 '14 at 23:04
-
2On the other hand, images don't let you copy/paste if necessary (not very relevant here, I know) and they really slow down the page which can be important for slow connections. – terdon Mar 08 '14 at 23:10
I got to this by searching "ubuntu server list gpt partitions". I was searching for an answer when using 16.04.1 LTS. For those of you who want to list partitions (MBR or GPT), fdisk seems to have support for both (and not just MBR as in earlier Ubuntu versions) in 16.04.1 LTS. Also parted
isn't installed by default when the "basic system utilities" option is selected during install. So the following command is all you need on 16.04.1 LTS:
sudo fdisk -l

- 109