상황: Linux에서 Python을 사용하여 자동 파일 마운트를 작성합니다. 시스템 호출을 사용하여 이 작업을 수행하는 Python 방식을 찾을 수 없습니다. 기술적으로 이는 bash 스크립트를 실행한다는 의미이며 Python을 통해 수행한다는 의미입니다.
문제: 디스크 레이블을 얻는 것만으로는 디스크를 마운트할 수 없습니다. 예를 들어, 디스크 레이블을 얻을 수 있지만 스왑 파티션으로 /dev/sda
만 /dev/sda1
마운트 할 수 있습니다./dev/sda2
fdisk
출력 및 parted
출력은 어떤 디스크를 마운트할 수 있는지 결정하는 데 실제로 도움이 되지 않습니다(예: 읽을 수 있는 유효한 파일 시스템이 있음).
질문: Linux/Bash 명령을 사용하여 어떤 디스크를 마운트할 수 있는지 어떻게 확인합니까? ( grep
최종 결과를 얻기 위해 10개 이상의 파이프를 연결해도 괜찮습니다.)
답변1
lsblk
둘 다 blkid
파티션에 무엇이 있는지 알아내는 데 사용할 수 있습니다(예: 스왑, 알려진 파일 시스템, 원시 데이터). 이들 모두에는 필요한 정보(예: 파일 시스템 유형, fs 태그, uuid 등)만 추출할 수 있도록 출력 형식을 지정하는 다양한 옵션이 있습니다.
IMO blkid
는 스크립팅을 위한 더 나은 도구이며, 내 경험상 어떤 유형의 블록 장치를 검사하든(예: lsblk
ZFS zvol로 무엇을 해야할지 모르겠습니다) 기존 파티션의 목적을 감지하는 데 더 blkid
좋습니다 . 블록 장치 동일한 방식으로 처리합니다. ZVOL이 바로 이것이기 때문에 수행해야 하는 작업입니다. lsblk
스크립트에서 사용할 수 있지만 제 생각에는 예쁜 인쇄물과 함께 대화식으로 사용하는 것이 더 좋습니다.
예를 들어 내 시스템 중 하나에서:
# blkid /dev/sda*
/dev/sda: PTUUID="3a1e16ae" PTTYPE="dos"
/dev/sda1: UUID="08799b67-8ed7-4cee-aea1-0f9e7bd1fc04" TYPE="ext4" PARTUUID="3a1e16ae-01"
/dev/sda2: UUID="db8bda5f-4f18-4abb-a151-08494e398047" TYPE="swap" PARTUUID="3a1e16ae-02"
/dev/sda3: UUID="fc967791-b9cf-4145-9047-8a8b223ac4bb" TYPE="xfs" PARTUUID="3a1e16ae-03"
또는 /dev/sda1의 파일 시스템 유형을 원하는 경우:
# blkid -o value --match-tag TYPE /dev/sda1
ext4
blkid
자세한 내용은 매뉴얼 페이지를 참조하십시오.
그런데 file -s
그것도 작동하지만 출력을 구문 분석하기가 더 어렵습니다. 예를 들어
# file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=08799b67-8ed7-4cee-aea1-0f9e7bd1fc04 (needs journal recovery) (extents) (large files) (huge files)