¿Existe una forma infalible a nivel de usuario de forzar la terminación de las conexiones sshfs?

¿Existe una forma infalible a nivel de usuario de forzar la terminación de las conexiones sshfs?

Quiero que sshfslas conexiones finalicen después de un tiempo, una hora como máximo, y esto significa iniciar el atcomando con fusermount -uel mismo comando o script que uso para iniciar el sshfsmontaje.

Sin embargo, noto que fusermountpuede fallar si los archivos están en uso, aunque quiero que el atcomando funcione ya sea que todavía haya archivos abiertos en la conexión o no.

En mi experiencia, la única forma confiable es ejecutar los fusermountcomandos como root o finalizar la sshfsconexión mediante el killcomando.

¿Existe alguna otra forma de forzar una desconexión sin estar ejecutando como root? El problema es que es posible que no esté en la terminal cuando los archivos aún estén abiertos, pero por razones de seguridad la conexión debe interrumpirse a menos que cancele el atcomando.

Respuesta1

Si solo desea liberar el punto de montaje y no le importa terminar la conexión SSH, puede ejecutar fusermount -z /mount/point. Esto realiza un desmontaje diferido: el punto de montaje ya no está asociado con el montaje, pero el montaje no desaparece hasta que se cierran todos los archivos abiertos en ese montaje.

Si solo desea cerrar la conexión SSH y no le importa el montaje, simplemente puede finalizar el proceso del servidor SFTP. Esa es la belleza de FUSE: finaliza el proceso que ofrece el servicio y desaparece. Un montaje no puede bloquear un recurso del sistema. Los procesos que intenten acceder a los sistemas de archivos obtendrán un error (ENOTCONN "El punto final de transporte no está conectado").

Si desea eliminar los procesos que tienen archivos abiertos en ese sistema de archivos, puede usar elfusercomando (sin relación con FUSE excepto que la F es la primera letra de "archivo").

fuser -k /mount/point

información relacionada