Como remontar o processo de dispositivo especial que não existe?

2

Eu fiz isso:

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

Mas então eu corri para isso:

mount: special device proc does not exist

[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)

Como posso remontar /proc sem reiniciar?

    
por Pdogeed 18.10.2018 / 11:14

2 respostas

1

Para evitar essa mensagem de erro, você precisa executar outro comando primeiro:

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

Mas você provavelmente começou com o sistema de arquivos proc psuedo montado em /proc . Nesse caso, o último comando mostrará uma nova mensagem:

mount: /proc: proc already mounted on /proc

Você pode evitar a nova mensagem de erro se executar umount /proc/ duas vezes antes de tentar montá-la novamente. No entanto, você não diz qualquer motivo para fazer isso :-). Provavelmente você só quer rodar os três primeiros comandos acima :-). Então você pode continuar usando o sistema de arquivos /proc como de costume.

Você não tem permissão para executar os comandos que tentou (no Linux). O motivo é que depois de excluir um diretório, você não tem permissão para usá-lo como um diretório. Quando você tenta usar um diretório excluído, o Linux retorna o código de erro ENOENT . A descrição desse código de erro é "Nenhum arquivo ou diretório".

Tecnicamente, o código de erro é confuso, porque o diretório tecnicamente ainda existe. Mas ele se encaixa melhor do que qualquer outro código de erro: -).

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

Da mesma forma, você não tem permissão para montar um sistema de arquivos sobre um diretório excluído.

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

Eu digo que o diretório tecnicamente ainda existe, porque ele ainda tem um número de inode (e o inode ainda armazena um registro de data e hora e um modo de permissão, etc):

# 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 .

Seu comando mount não imprimiu a descrição genérica do código de erro: "Nenhum arquivo ou diretório". O programa mount tenta adivinhar exatamente o que poderia ter causado o código de erro. Infelizmente, isso significa que às vezes adivinha errado :-). Não houve problema com "o dispositivo especial proc". O problema foi o ponto de montagem /proc .

    
por 18.10.2018 / 14:12
1

O que você fez com a primeira montagem é sobrepor o original /proc . Não remova /tmp/test , mas desmonte:

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)

Se você apagou o diretório antes de desmontar você precisa reiniciar, não tenho certeza, mas não acho que você possa remontar / proc desse estado.

    
por 18.10.2018 / 11:46