マウントされているかどうかに関係なく、特定のマシンに接続されているすべての書き込み可能なストレージデバイスを見つける必要があります。
これを行う方法は、書き込み可能なデバイス(hd *およびsd *)に対応する/dev
のすべてのエントリを試すことです。
より良い解決策はありますか、それともこれに固執するべきですか?
blockストレージデバイスのみに関心がある場合は、広く利用可能なutil-linuxパッケージのlsblk
を使用できます。
$ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME TYPE SIZE MODEL
sda disk 149.1G Toshiba MK1637GS
sda1 part 23.3G
sda2 part 28G
sda3 part 93.6G
sda4 part 4.3G
sr0 rom 1024M CD/DVDW TS-L632M
他の多くの列が利用可能なスクリプトを作成するのに適しています。
lshw
の出力をトロールし、disk
またはtape
クラスのデバイスに関する詳細を抽出することができます(他のクラス-storage
クラスは、ストレージコントローラ、scsi、sata、sasなど)。
例えば.
lshw -class disk -class tape
-short
オプションは、ニースのコンパクトな要約を提供します。例えば私の家のzfsonlinux server/workstation/experiment-box(残念ながらテープデバイスはありません):
#lshw -class tape -class disk -class storage -short H/W path Device Class Description =============== ========================================== /0/100/4/0ストレージJMB362 SATAコントローラー /0/100/5/0 scsi10ストレージJMB362 SATAコントローラー /0/100/5/0/0.0.0/dev/sdcディスク120GB Patriot Wildfire /0/100/b/0 scsi1ストレージSAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] /0/100/b/0/0.0.0/dev/sddディスク1TB WDC WD10EARS-00Y /0/100/b/0/0.1.0/dev/sdeディスク1TB WDC WD10EACS-00Z /0/100/b/0/0.2。 0/dev/sdfディスク1TB WDC WD10EACS-00Z /0/100/b/0/0.3.0/dev/sdgディスク1TB ST31000528AS /0/100/b/0/0.4 .0/dev/sdhディスク1TB ST31000528AS /0/100/b/0/0.5.0/dev/sdiディスク1TB ST31000528AS /0/100/b/0/0.6.0/dev/sdjディスク1TB ST31000528AS /0/100/11 scsi2 storage SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] /0/100/11/0/dev/sda disk 128GB Patriot Torqx 2 /0/100/11/1/dev/sdb disk 1TB ST31000528AS /0/1 scsi11 storage /0/1/0.0.0/dev/sdk disk 1967MB SCSI Disk /0/1/0.0.1/dev/sdl disk SCSI Disk /0/1/0.0.2/dev/sdm disk SCSI Disk /0/1/0.0.3/dev/sdn disk SCSI Disk /0/2 scsi66 storage /0/2/0.0.0/dev/sdo disk SCSI Disk /0/3 scsi67ストレージ /0/3/0.0.0/dev/sdp disk 4057MB SCSI Disk
/ 0/1デバイスは実際にはUSBカードリーダーであり(2GBのSDカードがスロットの1つに接続されています)、/ 0/2デバイスはmy Android接続された電話です) 0/3デバイスは4GB USBフラッシュドライブです。
lshw
は、プレーンテキスト、html、xml、およびjson出力を生成できます。ハードウェアの詳細をsqliteデータベース形式にダンプすることもできます。
これは、debianおよびその他のほとんどのディストリビューション用にパッケージ化されています。ホームページとソースは http://ezix.org/project/wiki/HardwareLiSter にあります。
lsblk
を使用して、すべてのブロックデバイスと、各デバイスが読み取り専用かどうかを一覧表示できます。
次に、grep
およびawk
を使用して、読み取り専用ではないブロックデバイスの名前を出力できます。
lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
このコマンドを試してください
ls -l /dev /dev/mapper |grep '^b'
システム内のすべてのブロックデバイスが一覧表示されます
lsblk
は、すべてのブロックストレージデバイスを一覧表示します。
fdisk -l
は、/proc/partitions
にリストされているすべてのデバイスのすべてのパーティションをリストします
lshw -short
は、システム上のすべてのハードウェア(Firewireを除く)に関する情報を提供します。
Derobertへの応答に従って、テープドライブとprintersをリストするものを探している場合、lsdev
、lsusb
、およびlspci
に興味がある可能性があります。
hwinfo を使用して、すべてのディスクをリストできます( documentation )。
hwinfo --block --short
は概要を示します。
disk:
/dev/sdb WDC WD3200AAKS-7
/dev/sda SAMSUNG HD103UJ
partition:
/dev/sdb1 Partition
/dev/sdb2 Partition
/dev/sda1 Partition
cdrom:
/dev/sr1 TSSTcorp DVD+-RW TS-H653B
/dev/sr0 HL-DT-ST DVD-ROM GDRH20N
hwinfo --disk
は、各ディスクの詳細を示します。
参考:Ubuntu 14.04以降などの一部のLinuxディストリビューションでは、 hwinfoは公式リポジトリに存在しません 。
次のコマンドを試すことができます:
file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
fdisk
およびlsblk
は、Debianインストーラーの仮想端末では使用できないことがわかりました。この場合、ブロックストレージデバイスのUUIDを取得するblkid
を使用します。