실제 장치를 연결하면 해당 장치 파일이 속한 장치 파일을 어떻게 알 수 있습니까? 있습니까? 예를

자동으로 마운트되지 않는 여러 USB 드라이브를 연결한다고 가정 해보십시오. 어떤 장치 파일이 어떤 물리적 장치에 속하는지 어떻게 알 수 있습니까? 예를 들어 마운트 할 수 있습니까?

나는 Mac OS X를 사용하고 있지만 모든 (또는 적어도 가장 인기있는) Unix 시스템에서 작동하는 답변을 좋아합니다. 과거에 Linux 에서이 문제가있었습니다.



답변

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)에 넣을 수있는 기능입니다 .

listusbdisks ()
{
    [[ "x $ 1"== "xv"]] && shift && 로컬 VERBOSE = -v
    $ {@-/ dev / sd에서 dsk에 대해?}
    하다
        / sbin / udevadm info --query = path --name = "$ dsk"| grep --colour = auto -q usb || 계속하다
        echo "===== 장치 $ dsk는 :"
        (평가 $ (/ 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.


답변

보편적 인 대답은 없습니다. Linux에서 가장 간단한 방법은 그놈 디스크 유틸리티를 시작하는 것입니다. 감지 된 모든 디스크가 마운트되었는지 여부에 관계없이 표시됩니다. 명령 행에서 blkid또는 의 출력을 참조 할 수 있습니다 udevadm info --export-db.


답변

Mac OS X에서는을 사용해보십시오 diskutil list.


답변

모든 유닉스와 관련하여 이것이 가능하다고 생각하지 않습니다.

오늘날 일반적인 외부 버스는 IDE처럼 고정 된 번호 체계를 포트에 사용하지 않습니다. 따라서 매핑에 필요한 나머지 데이터 소스는 드라이브 제조업체 이름, 일련 번호 또는 파티션 UID입니다.

특정 머신에서 제조업체 이름이 반드시 고유하지는 않습니다 (동일한 시리즈에서 두 개의 외부 드라이브를 연결한다고 가정하면 동일하게 식별 됨). 일련 번호는 파티션 UID와 같이 “외부에서 볼 수 없습니다”.

따라서 내가 생각할 수있는 유일한 범용 솔루션에 대해서는 물리적 드라이브에 일련 번호로 레이블을 지정하고 UDEV를 사용할 수있는 경우 rozcietrzewiacz의 답변에 제공된 udevadm 명령을 사용하는 것입니다.


답변