Есть ли надежный на уровне пользователя способ принудительного завершения соединений sshfs?

Я хочу, чтобы соединения sshfs были завершается через некоторое время, максимум через час, и это означает запуск команды at с помощью fusermount -u в той же команде или сценарии, которые я использую для запуска sshfs крепление.

Однако я заметил, что fusermount может выйти из строя, если файлы используются, хотя я хочу, чтобы команда at работала независимо от того, есть ли файлы, открытые в соединении, или нет.

По моему опыту, единственный надежный способ - запустить команды fusermount от имени пользователя root или завершить соединение sshfs с помощью команды kill .

Есть ли другой способ принудительного отключения без использования root? Проблема в том, что я могу не находиться у терминала, когда файлы все еще открыты, но в целях безопасности соединение должно быть разорвано, если я не отменю команду at .

0
03.10.2016, 00:30
1 ответ

Если вы хотите только освободить точку монтирования и не заботитесь о разрыве соединения SSH, вы можете запустить fusermount -z / mount / point .Это выполняет ленивое размонтирование: точка монтирования больше не связана с монтированием, но монтирование не исчезает, пока все открытые файлы на этом монтировании не будут закрыты.

Если вы хотите закрыть только SSH-соединение и не заботитесь о монтировании, вы можете просто убить процесс SFTP-сервера. В этом прелесть FUSE: убейте процесс, предлагающий услугу, и он исчезнет. Монтирование не может заблокировать системный ресурс. Процессы, которые пытаются получить доступ к файловым системам, получат ошибку (ENOTCONN «Конечная точка транспорта не подключена»).

Если вы хотите убить процессы, у которых есть файлы, открытые в этой файловой системе, вы можете использовать команду fuser (не имеет отношения к FUSE, за исключением того, что F является первой буквой слова «файл»).

fuser -k /mount/point
3
28.01.2020, 02:47

Теги

Похожие вопросы