"{{ ('%#x' % result.stat.dev).split('x') | last }}"
在其他任务中,有必要收集以下结果
~/test$ ls -al /dev/sd*
brw-rw----. 1 root disk 8, 0 Feb 29 00:01 /dev/sda
brw-rw----. 1 root disk 8, 1 Feb 29 00:01 /dev/sda1
brw-rw----. 1 root disk 8, 2 Feb 29 00:01 /dev/sda2
brw-rw----. 1 root disk 8, 3 Feb 29 00:01 /dev/sda3
brw-rw----. 1 root disk 8, 4 Feb 29 00:01 /dev/sda4
brw-rw----. 1 root disk 8, 5 Feb 29 00:01 /dev/sda5
brw-rw----. 1 root disk 8, 16 Feb 29 00:01 /dev/sdb
brw-rw----. 1 root disk 8, 32 Feb 29 00:01 /dev/sdc
brw-rw----. 1 root disk 8, 33 Feb 29 00:01 /dev/sdc1
首先需要了解inode的设备是什么?和命令输出中的设备号
stat
。然后,以调试输出为例
有一个
2051
十进制的设备 ID,但我们需要十六进制的。根据如何将十进制字符串转换为十六进制字符串?像这样的任务会报告
这需要分为主要 (
8
) 和次要 (3
) 设备。也许开始于在其他任务中,有必要收集以下结果
并相应地解析它,因为
ansible_facts.device_links
ansible_facts.devices
不收集和保存此类信息。根据
lsblk --output
仅针对必要信息进行格式化的基础设施可能会更容易。或者根据如何获取文件的设备/分区名称?只是
从这里我们可以看到Major 8 (SCSI) 和Minor 3 是
/dev/sda3
。以及“如何找出主设备号后面的内容? ”,请参阅示例Linux:主设备号和次设备号或分区的主设备号和次设备号。文本文件中的零填充字段的示例任务
将导致输出
这些数字可以访问,也可以转换为整数,如下所示
导致输出为
最后还有一个任务
将报告
补充:对于次要号码,必须取该号码的最后两位数字
文件:
/path/to/file1
linux 统计:
device 8/1
ansible 设备统计:
dev: 2049
2049(十二月)= 801(十六进制)-->
8
。01
-->8
/01
(十六进制) =8
/1
(十进制)文件:
/path/to/file2
linux 统计:
device 259/2
ansible 设备统计:
dev: 66306
66306(十进制)= 10302(十六进制)-->
103
。02
-->103
/02
(十六进制) =259
/2
(十进制)文件:
/path/to/file3
linux 统计:
device 254/1
ansible 设备统计:
dev: 65025
65025 (十进制) = FE01 (十六进制) -->
FE
.01
-->FE
/01
(十六进制) =254
/1
(十进制)文件:
/path/to/file4
linux 统计:
device 0/45
ansible 设备统计:
dev: 45
45 (十进制) = 2D (十六进制) -->
0
.2D
-->0
/2D
(十六进制) =0
/45
(十进制)