私は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
ファイルシステムではなく作業ディレクトリを持つデフォルトのファイルシステムに新しいファイルが作成されます。
マウント後にディレクトリを変更すると、目的の結果が得られます。