conoscere un file speciale di dispositivo numeri maggiori e minori in linux
Domanda
Tutti i file in / dev
sono file speciali ... rappresentano i dispositivi del computer.
Sono stati creati con il syscall mknod
. La mia domanda è: come posso conoscere il minore e
numeri importanti che sono stati utilizzati per creare questo file speciale?
Soluzione
L'elenco si chiama Elenco dei dispositivi LANANA Linux ed è gestito da Alan Cox.
Puoi trovare ultima copia online ( collegamento diretto ) o nel sorgente Linux. Il suo nome file nella struttura del kernel è Documentation / devices.txt
.
Per vedere i numeri maggiori e minori che hanno creato un nodo in / dev
(o qualsiasi nodo del dispositivo in quel caso), usa semplicemente ls
con - l
opzione:
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
In questo esempio, 202
è il numero principale dei tre dispositivi e 0
, 16
e 32
sono minori. Il b
a sinistra indica che il nodo è un dispositivo a blocchi. L'alternativa è c
, un dispositivo personaggio:
crw-rw-rw- 1 root tty 5, 0 Nov 22 00:29 /dev/tty
Altri suggerimenti
$ 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, major %t minor %T' /dev/fd0 /dev/null /dev/fd0: block special file, major 2 minor 0 /dev/null: character special file, major 1 minor 3
La maggior parte dei numeri di dispositivo sono fissi (ovvero / dev / null
sarà sempre un dispositivo a caratteri 1: 3
) ma su Linux, alcuni sono allocati dinamicamente.
$ cat /proc/devices Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ cat /proc/misc ... 57 device-mapper ...
Ad esempio, su questo sistema, accade che / dev / mapper / control
sarà c: 10: 57
mentre il resto di / dev / mapper / *
sarà b: 254: *
e questo potrebbe differire da un ciclo di avvio all'altro - o anche quando i moduli vengono caricati / scaricati e i dispositivi vengono aggiunti / rimossi .
Puoi esplorare ulteriormente queste registrazioni del dispositivo in / 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 $ cat /sys/devices/virtual/mem/null/dev 1:3
Puoi anche usare stat.
$ stat -c 'major: %t minor: %T' <file>
Soprattutto per i dispositivi a blocchi:
$ 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 /
Alternativa che non dipende da stat
:
$ cat /sys/class/*/random/dev
1:8