web-dev-qa-db-ja.com

存在しない特別なデバイスプロシージャを再マウントする方法?

これは私がしました:

root# mkdir /tmp/test && mount --bind /tmp/test/ /proc/
root# rm -rf /tmp/test
root# mount -t proc proc /proc

しかし、私はこれに遭遇しました:

マウント:特別なデバイスプロシージャが存在しません

[root@srv ~]# umount /proc
umount: /proc: umount failed: No such file or directory
[root@srv ~]# umount /proc
umount: /proc: umount failed: No such file or directory
[root@srv ~]# mount -t proc proc /proc
mount: special device proc does not exist
[root@srv ~]# ls -al /proc
total 0

[root@srv ~]# uname -r
3.10.0-693.11.6.el7.x86_64
[root@srv ~]# mount -V
mount from util-linux 2.23.2 (libmount 2.23.0: selinux, debug, assert)
[root@srv ~]# umount -V
umount from util-linux 2.23.2 (libmount 2.23.0: selinux, debug, assert)

再マウントするにはどうすればよいですか/proc再起動せずに?

2
Pdogeed

最初のマウントで行ったことは、元の/proc。削除しないでください/tmp/testですが、アンマウントします:

leap:~ # mount -o bind /tmp/test/ /proc/
leap:~ # mount |  grep proc
mount: failed to read mtab: No such file or directory
leap:~ # umount /proc
leap:~ # mount |  grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13202)

アンマウントする前にディレクトリを削除した場合、再起動する必要があるかどうかはわかりませんが、その状態から/ procを再マウントできるとは思いません。

1
eblock

このエラーメッセージを回避するには、最初に別のコマンドを実行する必要があります。

root# mkdir /tmp/test && mount --bind /tmp/test/ /proc/
root# rm -rf /tmp/test
root# umount /proc/
root# mount -t proc proc /proc

しかし、あなたはおそらく/procにマウントされたproc疑似ファイルシステムから始めました。その場合、最後のコマンドで新しいメッセージが表示されます。

mount: /proc: proc already mounted on /proc

再度マウントする前にumount /proc/twiceを実行すると、新しいエラーメッセージを回避できます。しかし、あなたがそれをしたい理由は何も言いません:-)。おそらく、上記の最初の3つのコマンドのみを実行する必要があります:-)。その後は、通常どおり/procファイルシステムを引き続き使用できます。


試行したコマンドを実行することは許可されていません(Linuxの場合)。その理由は、ディレクトリを削除した後は、それをディレクトリとして使用することが許可されないためです。削除されたディレクトリを使用しようとすると、LinuxはエラーコードENOENTを返します。このエラーコードの説明は、「そのようなファイルまたはディレクトリはありません」です。

技術的にはディレクトリがまだ存在するため、技術的にはエラーコードは混乱を招きます。しかし、それは他のどのエラーコードよりもうまく適合します:-)。

# mkdir dir
# cd dir
# rmdir ../dir
# mkdir subdir
mkdir: cannot create directory ‘subdir’: No such file or directory

同様に、削除されたディレクトリの上にファイルシステムをマウントすることはできません。

# mount --bind /proc .
mount: .: mount(2) system call failed: No such file or directory.

ディレクトリにはまだiノード番号があるため(つまり、iノードにはタイムスタンプやアクセス許可モードなどが格納されているため)、技術的にはディレクトリがまだ存在すると私は言います。

# ls -l -i -d .
5521426 drwxr-xr-x. 0 root root 0 Oct 18 13:09 .
# chmod a-x .
# ls -l -d .
drw-r--r--. 0 root root 0 Oct 18 13:09 .

mountコマンドは、エラーコードの一般的な説明を出力しませんでした:「そのようなファイルまたはディレクトリはありません」。 mountプログラムは、エラーコードの原因を正確に推測しようとします。残念ながら、これは時々間違って推測することを意味します:-)。 「特殊デバイスプロシージャ」は問題ありませんでした。問題はマウントポイント/procでした。

1
sourcejedi