리눅스에서 장치 특별 파일 전공 및 사소한 숫자 알기
문제
모든 파일 /dev
특수 파일입니다 ... 컴퓨터의 장치를 나타냅니다. 그들은 함께 만들어졌습니다 mknod
SYSCALL. 내 질문은 :이 특수 파일을 만드는 데 사용 된 미성년자와 주요 숫자를 어떻게 알 수 있습니까?
해결책
목록은 Lanana Linux 장치 목록, 그리고 Alan Cox가 관리합니다.
당신은 찾을 수 있습니다 최신 사본 온라인 (온라인직접 링크) 또는 리눅스 소스에서. 커널 트리의 파일 이름은입니다 Documentation/devices.txt
.
노드를 만든 주요 숫자와 작은 숫자를 보려면 /dev
(또는 해당 문제에 대한 모든 장치 노드), 간단히 사용하십시오. ls
이랑 -l
옵션:
22:26 jsmith@undertow% ls -l /dev/xvd?
brw-rw---- 1 root disk 202, 0 Nov 1 20:31 /dev/xvda
brw-rw---- 1 root disk 202, 16 Nov 1 20:31 /dev/xvdb
brw-rw---- 1 root disk 202, 32 Nov 1 20:31 /dev/xvdc
이 예에서 202
세 장치의 주요 숫자입니다 0
, 16
, 그리고 32
미성년자입니다. 그만큼 b
왼쪽은 노드가 블록 장치임을 나타냅니다. 대안은 c
, 캐릭터 장치 :
crw-rw-rw- 1 root tty 5, 0 Nov 22 00:29 /dev/tty
다른 팁
$ ls -l /dev /fd0 /dev /null brw-rw---- 1 root floppy 2, 0 Nov 22 19:48 /dev/fd0 crw-rw-rw- 1 root root 1, 3 Nov 22 19:48 /dev/null $ STAT -C ' %N : %F, 메이저 %T 마이너 %t' /dev /fd0 /dev /null /dev/fd0: block special file, major 2 minor 0 /dev/null: character special file, major 1 minor 3
대부분의 장치 번호는 고정되어 있습니다 (즉 /dev/null
항상 캐릭터 장치가됩니다 1:3
) 그러나 Linux에서는 일부는 동적으로 할당됩니다.
$ 고양이 /Proc /장치 Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ 고양이 /Proc /Misc ... 57 device-mapper ...
예를 들어,이 시스템에서는 /dev/mapper/control
될거야 c:10:57
나머지는 /dev/mapper/*
될거야 b:254:*
, 그리고 이는 한 부팅 사이클과 다른 부팅 사이클과 다를 수 있습니다. 또는 모듈이로드/언로드되고 장치가 추가/제거됩니다.
이 장치 등록을 더 탐색 할 수 있습니다 /sys
.
$ readlink/sys/dev/block/2 : 0 ../../devices/platform/floppy.0/block/fd0 $ cat /sys/devices/platform/floppy.0/block/fd0/dev 2:0 $ readlink/sys/dev/char/1 : 3 ../../devices/virtual/mem/null $ 고양이/시스템/장치/가상/mem/null/dev 1:3
STAT를 사용할 수도 있습니다.
$ stat -c 'major: %t minor: %T' <file>
특히 블록 장치의 경우 :
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 90G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
├─sda2 8:2 0 4G 0 part /
의존하지 않는 대안 stat
:
$ cat /sys/class/*/random/dev
1:8