tmpfs - 削除後もファイルが保持されます。

tmpfs - 削除後もファイルが保持されます。

私は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

現在ディレクトリにインストールされています。シェルは、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シェルの作業ディレクトリが既存のファイルシステムにあります。mount作業ディレクトリは変更されず、tmpfsファイルシステムではなく作業ディレクトリを持つデフォルトのファイルシステムに新しいファイルが作成されます。

マウント後にディレクトリを変更すると、目的の結果が得られます。

関連情報