判斷 /dev/sdx 的裝置類型 - Linux

Linda avatar
By Linda
at 2017-10-19T14:20

Table of Contents

各位先進好
小弟最近有個工作
需要用C語言去找到linux下,硬碟的/dev/ 的sd 之編號
小弟對linux很陌生
我們的環境下,主機上只可能插有 兩個usb碟 和 一個硬碟

所以ls /dev/sd*
之後
可能長成
/dev/sda /dev/sda1 /dev/sdb /dev/sdb1
這個樣子

這時候我插了一個硬碟和一個usb
且sda是硬碟,sdb是usb

我的工作就是利用C語言去找出 sda 這個字串

當然硬碟不可能永遠都是sda,如果先插usb再插硬碟

硬碟就可能變成sdb或sdc等等

我目前是先用C語言讀取 /proc/partitions 這個檔案
可以找到類似這樣的資訊
major minor #blocks name

8 0 488386584 sda
8 16 15646720 sdb
8 17 15646688 sdb1

然後判斷 sda的 blocks 比sdb的 blocks 還要大,所以回傳sda字串

但是我想說這個方法感覺很怪異

如果哪一天插了一個小容量的硬碟和一個大容量的usb

就馬上會回傳錯誤的sdx了

所以想請問版上前輩,有沒有什麼linux的command或者哪一個linux的檔案

有在紀錄著 usb 和 hd 掛載在 /dev/sdx 哪裡 的相關資訊呢?

跨檔案分析也可以喔~

先謝謝大家^^

--
Tags: Linux

All Comments

Tom avatar
By Tom
at 2017-10-21T12:10
lsblk -S 似乎不錯
Mary avatar
By Mary
at 2017-10-21T18:19
一般 usb 是可以拔除的,通常可以看
/sys/block/sd[a-z]/removable 檔案內容是 0 or 1
Necoo avatar
By Necoo
at 2017-10-26T06:14
我的 sdc 是 usb 可是 removable 是 0 耶
Candice avatar
By Candice
at 2017-10-28T13:56
那換個方式,ls -l 看一下 /dev/disk/by-id/usb*
Dorothy avatar
By Dorothy
at 2017-10-31T23:21
你用什麼系統為何沒 /dev/disk ? 這已經是 udev 通用的
Cara avatar
By Cara
at 2017-11-02T19:09
你該不會是特別的嵌入式系統 ?
Hamiltion avatar
By Hamiltion
at 2017-11-05T05:52
lsblk 都沒有,感覺你的系統是客置化特別版本
David avatar
By David
at 2017-11-05T20:28
busybox吧?不是完整的coreutils
Aaliyah avatar
By Aaliyah
at 2017-11-08T00:57
我的外接硬碟removable參數是0
你要不要測一下外接硬碟看看
Donna avatar
By Donna
at 2017-11-08T04:29
udevadm info -n /dev/sdb --attribute-walk |grep
usb-storage 有找到東西就是 USB 隨身碟
Yedda avatar
By Yedda
at 2017-11-12T08:38
或者 cat /sys/block/sdb/removable
Lucy avatar
By Lucy
at 2017-11-12T18:35
啊 .. 上面有人推過了 orz
Odelette avatar
By Odelette
at 2017-11-13T11:55
https://goo.gl/SyvVx7
Jessica avatar
By Jessica
at 2017-11-15T22:13
Line 3286
Jake avatar
By Jake
at 2017-11-17T13:42
Busybox啊 沒udev的話
一個方法是分析dmesg
或者可以試試
Isla avatar
By Isla
at 2017-11-21T04:41
readlink -f /sys/block/sdX/device
device的路徑如果有usb就是usb
Jacob avatar
By Jacob
at 2017-11-21T10:09
內接則應該會是ata 除非你走SAS XD
喔 PCIe的手上沒得試 所以我也不確定(?
Eden avatar
By Eden
at 2017-11-22T17:49
PCIe 的會叫 nvme0n1 吧

有關ssh key金鑰問題請教

John avatar
By John
at 2017-10-18T20:38
請教各位前輩 ? 1. 如果我有兩台電腦A和B A是透過SSH金鑰連到B電腦 A產生ssh public key放入B電腦 如果有一天因為資安需求我要修改A的密碼 那這樣我是不是還要再A主機重新產生一次public key放到B電腦呢? ? 2.如果要重新產製的話,我要把原本在B的publi ...

Linux用沙盒開Firefox?

David avatar
By David
at 2017-10-18T14:35
在Windows可以用Sandboxie的沙盤來開啟Firefox 用完後,刪除這個沙盤 完全不影響原來的Firefox和作業系統 在Linux的話 如何做到類似的事? Sandboxie沒有出Linux版本 thanks - ...

為什麼駭客都用linux

Olivia avatar
By Olivia
at 2017-10-17T20:50
駭客總是給人一種神秘的感覺 在黑色螢幕裡打綠色的指令 駭客通常都使用linux 但這是為什麼呢? - ...

kde4 桌面設定跑掉

Liam avatar
By Liam
at 2017-10-16T18:07
目前的作業系統是opensuse13.2 使用kde4的桌面環境。 桌面的組合型態是openGL2.0,qt圖形系統是Raster,顯示卡是Nvidia 705ti, 使用閉源驅動。 最近常常會在重新開機後,桌面環境的設定就整個跑掉了。 跑掉的包括: 預設活動中的plasma桌面元件:整個回復到 ...

Raspberry Pi 3 模擬(實作) Amazon echo

Puput avatar
By Puput
at 2017-10-16T11:19
Raspberry Pi 3 模擬(實作) Amazon echo (註)本篇較不適合樹莓派新手 公司說要開發類似echo家電產品 可以聲控 不要再用按鍵才會執行 經過三四天的努力 搞出來柳 避免大家走歪路 浪費寶貴的時間 一開始懵懵懂懂 不知從何下手 公司是有買了一支echo 但是看到還耍用手機( ...