مع العلم ملف خاص جهاز رئيسي وأرقام صغيرة في لينكس
سؤال
وجميع الملفات في /dev
هي ملفات خاصة ... أنها تمثل أجهزة الكمبيوتر.
تم إنشاؤها مع syscall mknod
. سؤالي هو: كيف يمكنني أن أعرف القاصر و
الأرقام الرئيسية التي استخدمت لإنشاء هذا الملف خاص؟
المحلول
ويسمى قائمة على LANANA لينكس قائمة الأجهزة ، أو ويدار من قبل آلان كوكس.
ويمكنك العثور على أحدث نسخة على الانترنت (<أ href = على "HTTP: //www.lanana.org/docs/device-list/devices-2.6+.txt "يختلط =" noreferrer "> الرابط المباشر )، أو في مصدر لينكس. اسم الملف الخاص به في شجرة النواة هو 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, 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يتم إصلاح
ومعظم الأرقام الجهاز (أي /dev/null
سيكون دائما شخصية 1:3
الجهاز) ولكن على لينكس، ويتم تخصيص بعض حيوي.
$ cat /proc/devices Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ cat /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 $ cat /sys/devices/virtual/mem/null/dev 1:3
ويمكنك أيضا استخدام القانون الأساسي.
$ 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