Я хочу, чтобы соединения sshfs
были завершается через некоторое время, максимум через час, и это означает запуск команды at
с помощью fusermount -u
в той же команде или сценарии, которые я использую для запуска sshfs
крепление.
Однако я заметил, что fusermount
может выйти из строя, если файлы используются, хотя я хочу, чтобы команда at
работала независимо от того, есть ли файлы, открытые в соединении, или нет.
По моему опыту, единственный надежный способ - запустить команды fusermount
от имени пользователя root или завершить соединение sshfs
с помощью команды kill
.
Есть ли другой способ принудительного отключения без использования root? Проблема в том, что я могу не находиться у терминала, когда файлы все еще открыты, но в целях безопасности соединение должно быть разорвано, если я не отменю команду at
.
Если вы хотите только освободить точку монтирования и не заботитесь о разрыве соединения SSH, вы можете запустить fusermount -z / mount / point
.Это выполняет ленивое размонтирование: точка монтирования больше не связана с монтированием, но монтирование не исчезает, пока все открытые файлы на этом монтировании не будут закрыты.
Если вы хотите закрыть только SSH-соединение и не заботитесь о монтировании, вы можете просто убить процесс SFTP-сервера. В этом прелесть FUSE: убейте процесс, предлагающий услугу, и он исчезнет. Монтирование не может заблокировать системный ресурс. Процессы, которые пытаются получить доступ к файловым системам, получат ошибку (ENOTCONN «Конечная точка транспорта не подключена»).
Если вы хотите убить процессы, у которых есть файлы, открытые в этой файловой системе, вы можете использовать команду fuser
(не имеет отношения к FUSE, за исключением того, что F является первой буквой слова «файл»).
fuser -k /mount/point