Quero que sshfs
as conexões sejam encerradas depois de algum tempo, no máximo uma hora, e isso significa lançar o at
comando fusermount -u
no mesmo comando ou script que utilizo para iniciar a sshfs
montagem.
No entanto, percebo que fusermount
pode falhar se os arquivos estiverem em uso, embora eu queira que o at
comando funcione independentemente de ainda haver arquivos abertos na conexão ou não.
Na minha experiência, a única maneira confiável é executar os fusermount
comandos como root ou encerrar a sshfs
conexão por meio do kill
comando.
Existe alguma outra maneira de forçar uma desconexão sem estar executando como root? O problema é que posso não estar no terminal quando os arquivos ainda estão abertos, mas por uma questão de segurança a conexão deve ser interrompida, a menos que eu cancele o at
comando.
Responder1
Se você quiser apenas liberar o ponto de montagem e não se importar em encerrar a conexão SSH, poderá executar o fusermount -z /mount/point
. Isso executa uma desmontagem lenta: o ponto de montagem não está mais associado à montagem, mas a montagem não desaparece até que todos os arquivos abertos nessa montagem sejam fechados.
Se você deseja apenas fechar a conexão SSH e não se importa com a montagem, você pode simplesmente encerrar o processo do servidor SFTP. Essa é a beleza do FUSE: elimine o processo que oferece o serviço e ele desaparece. Uma montagem não pode bloquear um recurso do sistema. Os processos que tentarem acessar os sistemas de arquivos receberão um erro (ENOTCONN “O endpoint de transporte não está conectado”).
Se quiser encerrar os processos que possuem arquivos abertos nesse sistema de arquivos, você pode usar ofuser
comando (sem relação com FUSE exceto pelo F ser a primeira letra do “arquivo”).
fuser -k /mount/point