首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash脚本:如何判断一个分区是否可以挂载?

Bash脚本:如何判断一个分区是否可以挂载?
EN

Unix & Linux用户
提问于 2018-02-20 04:09:57
回答 1查看 1.7K关注 0票数 1

情况:在Linux上使用Python编写自动文件挂载。使用系统调用(从技术上说,这意味着我正在执行bash脚本,只是通过Python执行),我无法找到这样的方法。

问题:获取磁盘标签不足以安装磁盘。例如,我能够获得磁盘标签/dev/sda,但是只有/dev/sda1是可挂载的,/dev/sda2是一个交换分区。

fdisk输出和parted输出并没有真正帮助我决定可以安装哪些磁盘(即有一个有效的、可读的文件系统)

问:通过使用Linux/Bash命令,我如何找到可以安装哪些磁盘(我不介意链接超过10个grep管道以获得最终结果)。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-20 05:21:54

lsblkblkid都可以用来查找分区中的内容(例如交换、已知的文件系统、原始数据)。它们都有不同的选项来指定输出格式,这样您就可以只提取所需的信息(例如文件系统类型、fs标签、uuid等)。

IMO blkid是编写脚本操作的更好工具,在我的经验中,它更好地用于检测现有分区的用途,无论检查的是哪种块设备(例如,lsblk不知道如何处理zvol。blkid对待它就像对待任何其他块设备一样--这正是它应该做的,因为这正是ZVOL的特性)。lsblk可以在脚本中使用,但是,IMO更倾向于交互使用和打印的输出。

例如在我的一个系统上:

代码语言:javascript
复制
# 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的文件系统类型:

代码语言:javascript
复制
# blkid -o value --match-tag TYPE /dev/sda1
ext4

有关详细信息,请参阅blkid手册页。

顺便说一下,file -s也可以使用,但是输出很难解析。例如:

代码语言:javascript
复制
# 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)
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/425303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档