哪个分区挂载到哪里?

Tim*_*Tim 14 filesystems partition mount

我们如何检查 中列出的分区的挂载点/dev/sd*?例如,我想知道我家的分区是否是/dev/sda4.

tal*_*zin 21

另一种方法是使用findmnt

findmnt /dev/sda4
Run Code Online (Sandbox Code Playgroud)

...从开发人员获取挂载点。或相反亦然:

findmnt /home
Run Code Online (Sandbox Code Playgroud)


pet*_*try 13

您可以使用:

  • mount 获取所有已挂载文件系统的列表以及每个文件系统的挂载选项;
  • lsblk 对于块设备树,大小和安装点(如果已安装);
  • df 有关已安装块设备、大小、已用空间、可用空间和安装点的列表。


Mik*_*e S 5

你实际上是在问两个问题。如果您想知道您的家在哪里,最简单的方法是:

cd
df -h .
Run Code Online (Sandbox Code Playgroud)

或者

df -h $HOME
Run Code Online (Sandbox Code Playgroud)

/tmp 安装在哪里?

df -h /tmp
Run Code Online (Sandbox Code Playgroud)

...等等。

如果您想知道某个设备上安装了什么,

mount | grep ^/dev/sda1
Run Code Online (Sandbox Code Playgroud)

(例如)。或者

mount | grep ^/dev/sd
Run Code Online (Sandbox Code Playgroud)

查看所有的sd。


ter*_*don 5

取决于你追求的是什么。如果您想检查哪个分区/dev/sd*具有默认挂载点以及该挂载点是什么,您可以这样做

for part in /dev/sd*; do grep -w "$part" /etc/fstab | awk '{print $1,$2}; done
Run Code Online (Sandbox Code Playgroud)

但是,在大多数现代系统上,分区是按 UUID 而不是开发名称挂载的,因此更好的方法1是:

for uuid in /dev/disk/by-uuid/*; do 
    mpoint=$(grep "$(basename $uuid)" /etc/fstab | awk '{print $2}')
    [ -n "$mpoint" ]  && echo  "$(basename $(readlink $uuid)) : $mpoint"; 
done
Run Code Online (Sandbox Code Playgroud)

例如,在我的系统上,它返回:

sda3 : swap
sda1 : /
sda2 : /home
sdc1 : /mnt/bigboy
sdb3 : /mnt/movies
sdb1 : /winblows
Run Code Online (Sandbox Code Playgroud)

您还可以扩展它以报告那些没有默认挂载点的分区:

for uuid in /dev/disk/by-uuid/*; do 
    dev=$(basename $(readlink $uuid))
    mpoint=$(grep "$dev" /etc/fstab | awk '{print $2}')
    if [ -n "$mpoint" ]; then
      echo  "$dev : $mpoint"; 
    else
      echo "$dev : No mountpoint"
    fi
done
Run Code Online (Sandbox Code Playgroud)

例如,如果要查找给定目录的分区~/,可以使用df

$ df /home/
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda2      442047744 266441120 153128800  64% /home
Run Code Online (Sandbox Code Playgroud)

或者,仅获取设备名称(注意--output标志不是 POSIX):

 $ df --output=source /home/ | tail -n1
 /dev/sda2
Run Code Online (Sandbox Code Playgroud)

要获取当前挂载的分区及其挂载点的列表:

mount | awk '/^\/dev/{print $1,$3}'
Run Code Online (Sandbox Code Playgroud)

最后,一个非常有用的命令是lsblk

$ lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
??sda1   8:1    0  29.3G  0 part /
??sda2   8:2    0 428.4G  0 part /home
??sda3   8:3    0     8G  0 part [SWAP]
sdb      8:16   0   1.4T  0 disk 
??sdb1   8:17   0   9.8G  0 part /winblows
??sdb2   8:18   0     1K  0 part 
??sdb3   8:19   0   1.2T  0 part /mnt/movies
??sdb5   8:21   0  46.6G  0 part 
??sdb6   8:22   0    14G  0 part 
??sdb7   8:23   0 117.4G  0 part 
??sdb8   8:24   0   2.3G  0 part 
sdc      8:32   0   1.8T  0 disk 
??sdc1   8:33   0   1.8T  0 part /mnt/bigboy
Run Code Online (Sandbox Code Playgroud)

1更好的方法是findmnt但在阅读@taliezin 的回答之前我从未听说过。


Joh*_*ohn 2

您正在寻找df命令。