Linux + OS 디스크 장치를 캡처하는 방법 [닫기]

Linux + OS 디스크 장치를 캡처하는 방법 [닫기]

운영체제(Linux)에 속한 디스크 장치를 캡처하고 싶습니다.

모든 Linux 시스템에는 운영 체제에 속한 디스크 목록이 있으므로 운영 체제에 속한 디스크를 캡처하려고 합니다.

fdisk를 통해 부팅이 sda1에 있음을 알 수 있습니다.

# sfdisk -l   | grep Linux
/dev/sda1   *      0+     63-     64-    512000   83  Linux
/dev/sda2         63+  19581-  19518- 156773376   8e  Linux LVM

따라서 운영 체제(Linux)에 속한 디스크를 캡처하기 위해 다음 명령을 만들었습니다.

# OS_DISK=` sfdisk -l   | grep Linux | awk '$2 == "*" {print $1}' | sed s'/\// /g' | awk '{print $2}' | sed 's/[0-9]*//g' `

# echo $OS_DISK    
  sda

명령이 작업을 수행하는 것 같습니다.

하지만 내 생각엔 이 CLI가 너무 길고 조금 어색한 것 같아

답변1

명령을 실행 fdisk하고 sfdisk패키지에 포함되어 있습니다 util-linux. 동일한 패키지에는 findmnt다음과 같이 사용할 수 있는 명령도 있습니다.

findmnt / -no SOURCE
/dev/sda6

답변2

  1. OS 디스크를 식별하기 위해 찾은 가장 간단한 명령은 입니다 df /. 불행하게도 이 명령은 많은 출력(헤더 라인과 많은 필드를 의미함)을 생성하므로 장치 이름만 얻으려면 여전히 일부 필터링을 수행해야 합니다.
  2. 당신 말이 맞습니다. 명령이 너무 길고 약간 투박합니다.  awk매우 강력한 프로그램입니다. grep및/또는 와 함께 사용할 필요가 거의 sed없으며 awk동일한 파이프라인에서 여러 명령을 사용할 필요가 거의 없습니다. 귀하의 파이프라인은 다음으로 대체될 수 있습니다.

    sfdisk -l | sfdisk -l | awk '/Linux/ && $2 == "*" { gsub("[0-9]", "", $1); print [ 삼]; }'
    다행스럽게도 십여 명밖에 안 되어서수치더 짧지만 5개가 아닌 1개의 명령입니다.

    PS는 sed 's/[0-9]*//g'약간 위험한 명령입니다. 왜냐면 g그것을 가지고 있어도 소용이 없기 때문입니다 *. 무슨 뜻인지 보려면 sed 's/[0-9]*/X/g'다양한 입력을 사용해 보고 및 s/[0-9]/X/g와 비교해 보세요 s/[0-9]\+/X/g.

  3. OS_DISK=` command `로 변경될 수 있으며 두 번째 형식(괄호 포함)이 선호됩니다.OS_DISK=$(command)

관련 정보