了解 Ubuntu 中不同对象的相同 inode 编号

2024-01-19

为什么 /cdrom 的 inode 号与 /cdrom 的 inode 号相同/sys/devices/platform/power在Ubuntu中?

以下在我的 Ubuntu 中具有相同的 inode 编号

./media/BACKUP_1/MISC
./cdrom
./sys/devices/platform/power

我通过在根目录运行以下命令来获取它们

find . -inum 12 2> /dev/null

回复莱夫勒的回答

I run

stat cdrom

I get

  File: `cdrom' -> `media/cdrom'
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d      Inode: 12          Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-03 04:25:35.000000000 +0300
Modify: 2009-08-03 04:19:05.000000000 +0300
Change: 2009-08-03 04:19:05.000000000 +0300

这些信息告诉你什么?

回复莱夫勒的编辑

通常,您可以剖析该设备 主要设备和次要设备的编号 'ls -l' 打印的数字 对于一个设备。

这个命令ls -l cdrom给我这个

lrwxrwxrwx 1 root root 11 2009-08-03 04:19 cdrom -> media/cdrom 

如何从中看出主设备号和次设备号?


这些设备可能位于不同的文件系统上 - 文件系统和索引节点号的组合是唯一的。

如果您使用stat()系统调用,相关字段是st_ino and st_dev (and st_rdev识别特殊设备)。


问题被扩展了——询问可以从中收集哪些信息:

  File: `cdrom' -> `media/cdrom'
  Size: 11              Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d      Inode: 12          Links: 1

从中可以看出很多东西。关键是这个符号链接位于设备号为(st_rdev)为 0x0801(或 2049),inode 号为 12。通常,您可以将设备号分解为主设备号和次设备号,这就是 'ls -l' 为设备打印。有很大可能(但我尚未正式验证这一点)主设备编号为 8,次设备编号为 1(基于十六进制表示形式 0x0801)。


这个问题被第二次延长:

这个命令ls -l cdrom给我这个

lrwxrwxrwx 1 root root 11 2009-08-03 04:19 cdrom -> media/cdrom

如何从中看出主设备号和次设备号?

简短的回答是“你不能”。其中之一的输出可能会提供适当的信息:

ls -l media/cdrom
ls -lL cdrom

上一个问题中显示的设备(来自stat我建议,命令)有主设备 8 和次设备 1。您可以通过运行 'ls -l' 在作为 ' 的文件系统安装的设备上.'。你可能会使用'df .' 查找已安装设备的名称 - 可能还有其他机制也可以工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Ubuntu 中不同对象的相同 inode 编号 的相关文章

随机推荐