2011-08-18 182 views
23

我遇到問題,無法檢測到哪一個塊設備是硬盤驅動器。我的系統有一個cd-rom驅動器,USB驅動器和一個未知供應商/類型的單個硬盤驅動器。列出Linux系統中的所有硬盤驅動器

如何通過linux命令,腳本或C應用程序識別硬盤驅動器?

+0

相對evant:http://unix.stackexchange.com/questions/4561/how-do-i-find-out-what-hard-disks-are-in-the-system – shuttle87

回答

24

會告訴你可用的磁盤系統中的

+0

有趣...我還沒有聽說過這個lshw程序。它是標準安裝的一部分嗎?我的Debian服務器沒有它。我的FreeBSD安裝也沒有(但他要求linux,所以BSD不計算在內) –

+0

@Aleks G:也許你的Debian安裝已經過時了:http://packages.debian.org/search?keywords=lshw – janneb

+0

我的debian絕對過時了 - 這是大約一年前託管公司在專用服務器上提供的標準安裝。但問題是,如果標準安裝沒有包含它,那麼他不能依賴它。 –

0

如果有可行的塊的設備的列表,然後將該文件

/SYS /塊/ [blockdevname] /可拆卸

將包含 「1」,如果該設備是可移動的, 「0」如果不能移除。

+0

外置USB硬盤是可拆卸的,但是您仍然可以從中啓動系統,因此在這種情況下,檢查'可移動'可能是不夠的。 –

+0

是的,我知道。在一行之間讀取,我猜想OP希望安裝進入(內部的,不可移動的)硬盤驅動器,而不是重新格式化正在插入的U盤(可能是因爲這是安裝程序駐留的地方) .. – janneb

+0

USB棒和USB硬盤有區別。例如,在Windows上,他們甚至會顯示不同的圖標。如果他關心重新格式化他的安裝U盤,他可能會明確地從列表中刪除該特定設備。他知道自己正在執行的程序的路徑,因此只需檢查相應設備的/ etc/mtab並將其從列表中排除。 –

5

由於shuttle87指出,有回答這個問題的幾個其他職位。我更喜歡的解決方案是:

root# lsblk -io NAME,TYPE,SIZE,MOUNTPOINT,FSTYPE,MODEL

NAME TYPE SIZE MOUNTPOINT FSTYPE   MODEL 
sdb  disk 2.7T        WDC WD30EZRX-00D 
`-sdb1 part 2.7T   linux_raid_member 
    `-md0 raid1 2.7T /home  xfs    
sda  disk 1.8T        ST2000DL003-9VT1 
|-sda1 part 196.1M /boot  ext3    
|-sda2 part 980.5M [SWAP]  swap    
|-sda3 part 8.8G/  ext3    
|-sda4 part  1K        
`-sda5 part 1.8T /samba  xfs    
sdc  disk 2.7T        WDC WD30EZRX-00D 
`-sdc1 part 2.7T   linux_raid_member 
    `-md0 raid1 2.7T /home  xfs    
sr0  rom 1024M        CDRWDVD DH-48C2S 

參考文獻: