مع العلم ملف خاص جهاز رئيسي وأرقام صغيرة في لينكس

StackOverflow https://stackoverflow.com/questions/1823743

  •  22-07-2019
  •  | 
  •  

سؤال

وجميع الملفات في /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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top