물리적 장치를 연결하는 경우 어떤 장치 파일이 해당 장치에 속해 있는지 어떻게 알 수 있나요?

물리적 장치를 연결하는 경우 어떤 장치 파일이 해당 장치에 속해 있는지 어떻게 알 수 있나요?

자동으로 마운트되지 않는 여러 USB 드라이브를 연결했다고 가정해 보겠습니다. 마운트할 수 있도록 어떤 장치 파일이 어떤 물리적 장치에 속하는지 어떻게 확인합니까?

저는 Mac OS X를 사용하고 있지만 모든(또는 적어도 가장 널리 사용되는) Unix 시스템에 적용되는 답변을 선호합니다. Linux를 사용하기 전에 이 문제가 발생했습니다.

답변1

udev를 사용하세요:

유용한 정보 쿼리를 얻을 수 있습니다 udev(이를 사용하는 시스템에서 - 확실히 거의 모든 데스크탑 Linux). 예를 들어, 연결된 드라이브가 무엇인지 알고 싶다면 다음을 /dev/sdb사용할 수 있습니다.

udevadm info --query=property --name=sdb

일련 번호(ID_SERIAL_SHORT)를 포함하여 장치의 속성 목록이 표시됩니다. 이 정보를 사용하면 출력을 검토 lsusb -v하고 제조업체 및 제품 이름과 같은 정보를 찾을 수 있습니다.

이를 수행하는 더 짧은 경로는 다음과 같습니다.

udevadm info --query=property --name=sdb | grep "\(MODEL_ID\|VENDOR_ID\)"

$ID_VENDOR_ID:$ID_MODEL_ID더 짧은 출력에서 ​​일치하는 줄을 확인하세요 lsusb.

또 다른 유용한 옵션은 udevadm monitor어떤 장치 노드가 생성되었는지 알고 싶다면 다음을 사용하십시오.장치를 연결할 때. 그럼 먼저 실행해 보세요

 udevadm monitor --udev --subsystem-match=block

그런 다음 장치를 연결하십시오. 각 출력 라인의 끝에 인쇄된 감지된 블록 장치(디스크/파티션)의 장치 이름을 볼 수 있습니다.

실제 쉘 함수 예:

.bashrc(또는 .zshrc) 에 넣을 수 있는 함수는 다음과 같습니다 .

USB디스크 목록()
{
    [[ "x$1" == "xv" ]] && Shift&& local VERBOSE=-v
    ${@-/dev/sd?}의 dsk용
    하다
        /sbin/udevadm info --query=path --name="$dsk" | grep --color=auto -q USB ||
        echo "====== $dsk 장치는 다음과 같습니다:"
        ( eval $(/sbin/udevadm info --query=property --name="$dsk" | grep "\(MODEL\|VENDOR\)_ID")
          [ "$ID_VENDOR_ID:$ID_MODEL_ID" == ":" ] && echo "알 수 없음" ||
            lsusb $VERBOSE -d “$ID_VENDOR_ID:$ID_MODEL_ID”
        )
        grep -q "$dsk" /proc/mounts && echo "------장치가 설치되었습니다----"
        에코
    완벽한
}

다음과 같이 사용하세요:

  • listusbdisks- 모든 /dev/sdx장치를 식별합니다.
  • listusbdisks sdb또는 - 특정 장치에 대한 정보만 얻습니다 listusbdisks /dev/sdb.listusbdisks sdb sdc
  • listusbdisks -v [optional devices as above]- 자세한 출력 표시lsusb

[편집하다]:여러 장치 쿼리, 설치 및 제어 확인과 같은 기능이 추가되었습니다 lsusb.

답변2

보편적인 대답은 없습니다. Linux에서 가장 쉬운 방법은 마운트 여부에 관계없이 감지된 모든 디스크를 표시하는 gnome 디스크 유틸리티를 시작하는 것입니다. 명령줄에서 blkid또는 의 출력을 볼 수 있습니다 udevadm info --export-db.

답변3

Mac OS X에서는 diskutil list.

답변4

모든 유닉스에서는 이것이 가능하다고 생각하지 않습니다.

오늘날의 일반적인 외부 버스는 IDE와 같이 포트에 고정된 번호 지정 방식을 사용하지 않습니다. 따라서 매핑에 필요한 유일한 남은 데이터 소스는 드라이브의 제조업체 이름, 일련 번호 또는 파티션의 UID입니다.

제조업체 이름은 지정된 시스템에서 반드시 고유할 필요는 없습니다(동일한 시리즈의 외부 드라이브 2개를 연결한다고 가정하면 두 드라이브의 ID는 동일합니다). 일련번호는 파티션 UID처럼 "외부에서 보이지 않습니다".

따라서 제가 생각할 수 있는 유일한 일반적인 해결책은 물리적 드라이브에 일련 번호를 태그하고 UDEV가 사용 가능한 경우 rozcietrzewiacz의 답변에 제공된 udevadm 명령을 사용하는 것입니다.

관련 정보