情况:在Linux上使用Python编写自动文件挂载。使用系统调用(从技术上说,这意味着我正在执行bash脚本,只是通过Python执行),我无法找到这样的方法。
问题:获取磁盘标签不足以安装磁盘。例如,我能够获得磁盘标签/dev/sda,但是只有/dev/sda1是可挂载的,/dev/sda2是一个交换分区。
fdisk输出和parted输出并没有真正帮助我决定可以安装哪些磁盘(即有一个有效的、可读的文件系统)
问:通过使用Linux/Bash命令,我如何找到可以安装哪些磁盘(我不介意链接超过10个grep管道以获得最终结果)。
发布于 2018-02-20 05:21:54
lsblk和blkid都可以用来查找分区中的内容(例如交换、已知的文件系统、原始数据)。它们都有不同的选项来指定输出格式,这样您就可以只提取所需的信息(例如文件系统类型、fs标签、uuid等)。
IMO blkid是编写脚本操作的更好工具,在我的经验中,它更好地用于检测现有分区的用途,无论检查的是哪种块设备(例如,lsblk不知道如何处理zvol。blkid对待它就像对待任何其他块设备一样--这正是它应该做的,因为这正是ZVOL的特性)。lsblk可以在脚本中使用,但是,IMO更倾向于交互使用和打印的输出。
例如在我的一个系统上:
# blkid /dev/sda*
/dev/sda: PTUUID="3a1e16ae" PTTYPE="dos"
/dev/sda1: UUID="08799b67-8ed7-4cee-aea1-0f9e7bd1fc04" TYPE="ext4" PARTUUID="3a1e16ae-01"
/dev/sda2: UUID="db8bda5f-4f18-4abb-a151-08494e398047" TYPE="swap" PARTUUID="3a1e16ae-02"
/dev/sda3: UUID="fc967791-b9cf-4145-9047-8a8b223ac4bb" TYPE="xfs" PARTUUID="3a1e16ae-03"或者,如果我只想要/dev/sda1 1的文件系统类型:
# blkid -o value --match-tag TYPE /dev/sda1
ext4有关详细信息,请参阅blkid手册页。
顺便说一下,file -s也可以使用,但是输出很难解析。例如:
# file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=08799b67-8ed7-4cee-aea1-0f9e7bd1fc04 (needs journal recovery) (extents) (large files) (huge files)https://unix.stackexchange.com/questions/425303
复制相似问题