Come mostrare i dischi disponibili su un sistema Linux?

Se eseguo fdisk -l otterò un'output come:

Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x0003ad9d Device Boot Start End Blocks Id System /dev/sda1 1 1306 10490413+ 83 Linux /dev/sda2 1307 2612 10490445 83 Linux Disk /dev/sdb: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x0003ad9d Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 83 Linux /dev/sdb2 1307 2612 10490445 83 Linux 

Come posso solo mostrare i dischi disponibili sul sistema in modo che possano con uno spazio tra loro come:

/ dev / sda / dev / sdb / dev / sdc

7 Solutions collect form web for “Come mostrare i dischi disponibili su un sistema Linux?”

È ansible utilizzare i tubi per redirect l'output

  fdisk -l | grep ^Disk | awk -F: '{ print $1 }' | awk -F" " '{ print $2 }' 
  • fisk -l: get l'output completo del disco
  • grep Disk: filtrare la row che inizia con Disk
  • awk -F: '{print $ 1}': get la prima parte where il separatore è ":"
  • awk -F "" '{print $ 2}': get la seconda parte in cui il separatore è spazio

Provare:

 cat /proc/partitions 

o

 ls /dev/sd* 

Questo elenca tutte le partizioni disponibili!

Ecco una versione perl:

 fdisk -l | perl -n -e 'if (m{^Disk (\/.*):}) { print $1," "} END { print "\n"}' 

stampe:

 /dev/sda /dev/sdc 

Ciò mostra le partizioni montate come un elenco delimitato da spazi:

 echo $(mount -t ext2,ext3 | cut -f1 -d' ') 

È ansible aggiungere altri tipi di file system.

Ecco alcune alternative, se si possono fare alcune ipotesi (mi piace / proc / partizioni, però, fintanto che stai filtrando i principali numbers in modo da non prelevare volumi LVM ecc.)

Supponendo che i tuoi dischi siano tutti locali (ad es., Non SAN):

 user@host [/home/q0px] $ ls -l /dev/disk/by-path/ total 0 lrwxrwxrwx 1 root root 9 Dec 5 01:27 pci-0000:00:1f.1-ide-0:0 -> ../../hda 

Se le partizioni hanno tutti UUIDs (funziona anche per i dispositivi SAN)

 user@host [/home/q0px] $ ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 18 Dec 5 01:27 dc13d5cf-ba98-4339-99c5-0136177f7e22 -> ../../cciss/c0d0p1 

Se tutte le partizioni hanno etichette (anche orche per dispositivi SAN):

 user@host [/home/q0px] $ ls -l /dev/disk/by-label/ total 0 lrwxrwxrwx 1 root root 18 Dec 5 01:27 boot -> ../../cciss/c0d0p1 

Penso che la soluzione migliore consiste nell'utilizzare un solo command, come:

  awk '/[az]$/ {print $4}' /proc/partitions 

o se si dispone di dispositivi md o dm e si desidera visualizzare solo unità sata (sdx):

  awk '$4 ~ /^sd.$/ { print $4 }' /proc/partitions 

Anche non così bella, ancora un liner, utilizza più comandi, ma funziona:

  cat /proc/partitions | awk '{print $4}' | grep sd[az] | grep -v [0-9] 

Solo i miei 2 centesimi … Spero che aiuta!

Suppongo comandi come quello in uso, o df (che elenca i dispositivi mentre mostra lo spazio libero e utilizzato) non emetterà i dati in modalità spaziale delimitata come u vuole. U deve usare un command di elaborazione string come sed 'piped' all'output dei comandi di disco precedenti e get l'oputput desiderato.

-ANNO DOMINI.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.