어떤 / dev가 USB 플래시 드라이브인지 어떻게 알 수 있습니까?


160

USB 드라이브를 마운트하고 싶습니다. 그 중 두 개는 두 개의 다른 마운트 지점이 필요합니다. 불행히도 리눅스 커널은 이름이 바뀌었고 /dev올바른 위치를 알 수 없습니다 . 를 통해 볼 수있는 방법이 있나요 dmesg또는 /procUSB 드라이브 인 장치 노드 알아 또는 다른 곳은.

(아직 도움이된다면 ArchLinux를 사용하고 있습니다 ... /dev/sda첫 번째 하드 드라이브, /dev/sr0DVD 드라이브 등입니다.)

편집 : USB 드라이브가 USB 허브에 연결되어 있습니다. 나는 살펴보고 dmesg허브가 연결되어 있으며 허브에 연결된 3 개의 장치를 스캔했다고 말합니다. 그래도 USB 드라이브가 어디에 있는지 볼 수 없습니다.


1
보이지 않습니까? 조금만 기다려주세요. 또는 다른 USB 포트를 사용해보십시오. 'lsusb'의 차이점보기
Nick Devereaux

모든 USB 장치가 디스크 인 것은 아닙니다.
Arafangion

3
df가 장착 된 위치 명령을 보여줍니다
윌 셰퍼드

답변:


83

가장 쉬운 방법 : dmesgUSB 장치를 연결 한 후의 출력을보십시오 . /dev할당 된 노드가 표시 됩니다.


2
dmesg훌륭하게 작동하지만 노드를 dmesg표시하지 않는 경우 가 있습니다. 이것이 무엇을 의미합니까? 이 장치를 어떻게 장착합니까? 장치가 나타납니다 .../dev[421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcdlsusb
modulitos

1
실제로, 나는 그것을 알아 냈습니다. 마지막 재부팅 이후이 문제를 일으키는 커널 업데이트가있었습니다. 재부팅 후 USB가 제대로 마운트됩니다. 잘만되면 이것은 누군가를 돕는다!
modulitos

54

만큼 당신이 실행으로 udev에를 , 당신은 참조는 / dev / 디스크 /별로 ID / USB-에 의해 쉽게 할 수 manufacturername _ 의 serialNumber . 이들은 fstab 내에서 직접 참조하거나 readlink -e 를 사용하여 참조 된 관련 블록 장치를 역 참조 할 수있는 기호 링크로 나타납니다 .

여기 실제 사례가 있습니다. 내 컴퓨터에는 3 개의 USB 하드 드라이브가 연결되어 있습니다. 이들은 각각 고유 한 일련 번호와 함께 / dev / disk / by-id에 표시됩니다 (공통 제조업체 문자열을 공유하더라도). 이 세 가지 고유 항목 각각에 대한 심볼릭 링크를 만들었으며 이제 readlink -e linkname 을 실행하여 어느 드라이브가 어떤 드라이브이고 어떤 드라이브가 각 드라이브와 연결되어 있는지 신속하게 확인할 수 있습니다 . 예를 들어, 내 컴퓨터 에서 readlink -e / root / disk2 를 실행하면 현재 " / dev / sde " 가 표시 되지만 readlink -e / root / disk3 은 어떤 출력도 생성하지 않습니다.


15
짧고 간단히 :for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done
Felipe Alcacibar

54

이 모든 것이 좋은 제안이지만 가장 빠르고 가장 간단한 방법은 터미널에 다음을 입력하는 것입니다.

mount

마운트 된 모든 장치 목록이 표시됩니다 (이것은 USB 드라이브가 마운트 된 것으로 가정하며, 일반적으로 최신 Linux 배포판의 경우입니다).


5
아니요, 마술처럼 기기를 마운트하지 않습니다. 로 지정해야 mount /dev/id /mount/point작동하지 않습니다.
polym

9
내 대답은 사용자의 질문에 'dmesg 또는 / proc 또는 다른 곳에서 USB 드라이브가 어떤 장치 노드인지 확인하는 방법이 있습니까?'이며 Linux에서 드라이브를 마운트하는 실용성에 대한 지침을 제공하지는 않습니다. .
AnotherLongUsername

이 답변은 거의 동일한 질문을 해결했습니다.
Matthew Brown 일명 Lord Matt

1
자동 마운트 동작은 배포 유형에 따라 크게 달라집니다.
jiggunjer

1
df나도 그렇게 생각합니다.
Alexey

24

명령을 시도하십시오 udevinfo -q all -n /dev/sda. 여기서 /dev/sda디스크의 경로입니다. 이를 통해보고있는 디스크에 대한 정보를 얻을 수 있습니다. 연결된 버스에 대해 알려주는 항목이 있습니다.

이것은 물론 dmesg 및 / 또는 로그를 통해 grep하지 않아도됩니다.

최신 정보

udevadm info --query=all -n /dev/sda 

적어도 2010 년 7 월부터 [ 1 ] udevinfo 은 데비안에서 대체되었고 (그리고 파생 된) udevadm info약간의 일시적으로 약간 더 이상 사용되지 않고 제거 된 심볼릭 링크가있었습니다 (여전히 업데이트되지 않은 오래된 머신에서 찾을 수 있습니다). 항상 [ 1 ] 부터 읽을 수 있습니다 :

udev 117에서 udevadm소개 udevinfo되었고 다른 프로그램들은 호환성 심볼릭 링크로 바뀌 었습니다. 심볼릭 링크는 udev 128 에서 더 이상 사용되지 않으며 udev 147 에서 제거되었습니다 .


8
데비안에서는 udevinfo이름이로 바뀌 었습니다 udevadm.
Steve Pomeroy

8
우분투에서 명령은 "udevadm info --query = all -n / dev / sda"
machineghost

나는 그들이 어떤 시점에서 명령의 이름을 바꾸 었다고 가정합니다-대답을 썼을 때 명령은 내가 게시 한 우분투 시스템에서 작동했습니다.)
Eltariel

명령, 우분투에서 여전히 작동udevadm info --query=all -n /dev/ttyUSB1
싯다 르트 나라 얀

1
udevadm info --query=all -n /dev/ttyUSB페도라에서도.
slm

22

무슨 일이 일어나고 있는지 확인하는 가장 간단한 방법은 입력하는 것입니다 (물론 루트로) :

blkid -c /dev/null

이것은 마운트되지 않은 경우에도 모든 블록 장치에 대한 완전한 개요를 제공합니다


모든 배포판에 이것이있는 것은 아닙니다. 어느 것을 사용 했습니까?
새로운 Alexandria

이것은 내 Raspbian 배포판에 아무것도 출력하지 않습니다.
IgorGanapolsky

명령을 찾을 수 없음 : blkid
IgorGanapolsky

Ubuntu 14.04 64 비트에서이 명령의 출력이 없습니다.
gbmhunter

11

/dev/disk/by-* 이 경우 가장 쉬운 방법입니다. 어떤 이유로 인생을 더 흥미롭게 만들고 싶다면 HAL을 사용할 수 있습니다.

사용하는 모든 장치를 나열하려면 :

hal-device

사용하는 특정 속성을 가져 오려면 ( /dev/sd*USB 저장 장치로 반환 ) :

hal-get-property --udi $UDI --key block.device

도 있습니다:

hal-find-by-capability
hal-find-by-property

더 복잡하게 만들고 싶다면 HAL 기반 자동 마운터를 비교적 쉽게 작성할 수 있습니다. 이는 자동으로 사물을 자동화하려는 경우 매우 유용 할 수 있습니다.

그리고 완전성을 위해 다음도 있습니다.

lsusb -v
lshw

USB 및 하드웨어에 대한 일반적인 정보를 제공합니다.


2
/ dev / disk / by-id / * usb *는 매우 유용합니다.
Rob

/ dev / disk / by-label ftw. 감사합니다 :)
Triptych 2016 년

10
sudo fdisk -l

결과 만 분석하면됩니다.


1
fdisk 매뉴얼 페이지 "장치가 제공되지 않으면 / proc / partitions (있는 경우)에 언급 된 장치가 사용됩니다." fdisk를 실행하는 것은 옵션이 아닐 수 있습니다 ... 내가 알고있는 데비안 시스템 하나에 따라 설치하지 않은 것으로 생각하면, 일부 GPT 시스템은 불필요한 소프트웨어를 설치하지 않을 수 있습니다. 여전히 / proc / partitions를 검사하는 것은 옵션입니다.
TOOGAM

이것은 나를 위해 잘 작동하는 유일한 옵션이었습니다. 그것이 당신을 위해 작동하지 않으면 죄송합니다!
Felipe

8

사용하다

ls -l /dev/disk/by-id/usb*

기본 udev 규칙에 따라 대부분의 USB 장치가 표시되고 시스템의 블록 장치 이름에 대한 심볼릭 링크가 표시됩니다.

그래도 문제가 해결되지 않으면 /dev/disk/by-id/직접 살펴보십시오 .


6

USB 장치의 경우 간단하게 할 수 있습니다

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"

1
+1. 작업을 자동으로 수행하는 간단하고 간결한 스크립트.
leesei

2

아래의 나무를 살펴보십시오 /dev/disk. 디스크와 해당 파티션 (파일 시스템)을 다양한 체계로 나열합니다.


2

dmesg에 더 이상 정보가없는 경우 / var / log / message


0

USB 드라이브를 분리했다가 다시 연결하면 커널 (dmesg)에서 초기화되는 것을 볼 수 있습니다


0

"/ dev / disk / by-id / usb"디바이스 트리를 채우기 위해 스톰 래쉬의 탁월한 대답과 udev에 대한 종속성을 기반으로 다음과 같이 술어 (Bash)를 정의 할 수 있습니다.

is_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            return 0
        fi
    done
    return 1
}

그런 다음 사용하십시오.

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.