문제

모든 파일 /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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top