sshfs 연결을 강제로 종료하는 사용자 수준의 완벽한 방법이 있습니까?

sshfs 연결을 강제로 종료하는 사용자 수준의 완벽한 방법이 있습니까?

sshfs일정 시간(최대 1시간) 후에 연결이 종료되기를 원합니다 . 이는 마운트 를 시작하는 데 사용하는 것과 동일한 명령 또는 스크립트로 at명령 을 실행하는 것을 의미합니다 .fusermount -usshfs

그러나 연결에 파일이 아직 열려 있는지 여부에 관계없이 명령이 작동하기를 fusermount원하지만 파일이 사용 중이면 실패할 수 있다는 것을 알았습니다 .at

내 경험상 신뢰할 수 있는 유일한 방법은 fusermount명령을 루트로 실행하거나 명령을 sshfs통해 연결을 종료하는 것입니다 kill.

루트로 실행하지 않고 강제로 연결을 끊는 다른 방법이 있습니까? 문제는 파일이 아직 열려 있을 때 터미널에 없을 수도 있지만 보안을 위해 명령을 취소하지 않는 한 연결이 끊어져야 한다는 것입니다 at.

답변1

마운트 지점만 확보하고 SSH 연결 종료에 관심이 없다면 다음을 실행할 수 있습니다 fusermount -z /mount/point. 이는 지연 마운트 해제를 수행합니다. 마운트 지점은 더 이상 마운트와 연결되지 않지만 해당 마운트에서 열려 있는 모든 파일이 닫힐 때까지 마운트는 사라지지 않습니다.

SSH 연결만 닫고 마운트에 신경쓰지 않으려면 SFTP 서버 프로세스를 종료하면 됩니다. 이것이 FUSE의 장점입니다. 서비스를 제공하는 프로세스를 종료하면 사라집니다. 마운트는 시스템 리소스를 잠글 수 없습니다. 파일 시스템에 액세스하려고 시도하는 프로세스에는 오류가 발생합니다(ENOTCONN "전송 끝점이 연결되지 않았습니다").

해당 파일 시스템에 파일이 열려 있는 프로세스를 종료하려면 다음을 사용할 수 있습니다.fuser명령(F가 "file"의 첫 글자라는 점을 제외하면 FUSE와 관련 없음).

fuser -k /mount/point

관련 정보