我正在学习有关tmpfs
.这手册页因为tmpfs
说-
tmpfs 工具允许创建其内容驻留在虚拟内存中的文件系统。
和 -
如果卸载 tmpfs 文件系统,其内容将被丢弃(丢失)。
但即使卸载后我也可以看到文件 -
mediumone@ubuntu:~$ mkdir tmpfsdir
mediumone@ubuntu:~$ cd tmpfsdir/
mediumone@ubuntu:~/tmpfsdir$ sudo mount -t tmpfs tmpfs ~/tmpfsdir/
mediumone@ubuntu:~/tmpfsdir$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime,errors=remount-ro
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755
..snip
├─/snap/gnome-3-28-1804/116 /dev/loop15 squashfs ro,nodev,relatime
└─/home/mediumone/tmpfsdir tmpfs tmpfs rw,relatime
mediumone@ubuntu:~/tmpfsdir$ echo "hello world" >> hello
mediumone@ubuntu:~/tmpfsdir$ ls -l
total 4
-rw-r--r-- 1 mediumone mediumone 12 Feb 17 02:15 hello
mediumone@ubuntu:~/tmpfsdir$ sudo umount -l ~/tmpfsdir/
mediumone@ubuntu:~/tmpfsdir$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime,errors=remount-ro
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755
..snip
└─/snap/gnome-3-28-1804/116 /dev/loop15 squashfs ro,nodev,relatime
mediumone@ubuntu:~/tmpfsdir$ ls -l
total 4
-rw-r--r-- 1 mediumone mediumone 12 Feb 17 02:15 hello
mediumone@ubuntu:~/tmpfsdir$ cat hello
hello world
mediumone@ubuntu:~/tmpfsdir$
我也尝试过sudo umount -f ~/tmpfsdir/
,得到了相同的结果。
有人可以解释出了什么问题吗?
答案1
您安装在当前目录上。您的 shell 将继续使用原始目录而不是已安装的目录,直到您cd
返回该目录。其他命令也会继承原来的目录:
% mkdir foo
% cd foo
~/foo
% df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root 1.8T 77G 1.7T 5% /
% sudo mount -t tmpfs tmpfs ~/foo
% df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root 1.8T 77G 1.7T 5% /
不过,对该目录的新访问将使用已安装的目录:
% df -h . ~/foo
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root 1.8T 77G 1.7T 5% /
tmpfs 3.9G 0 3.9G 0% /home/muru/foo
如果你cd
再次这样做:
% cd .
% df -h . ~/foo
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.9G 0 3.9G 0% /home/muru/foo
tmpfs 3.9G 0 3.9G 0% /home/muru/foo
答案2
cd
第一次时tmpfsdir
,您的 shell 的工作目录位于现有文件系统上。mount
不会更改您的工作目录,并且新文件是在您的工作目录所在的底层文件系统上创建的,而不是在tmpfs
文件系统上创建的。
挂载后更改目录,您将得到您期望的结果。