sshfs 接続を強制的に終了するユーザーレベルの確実な方法はありますか?

sshfs 接続を強制的に終了するユーザーレベルの確実な方法はありますか?

sshfsしばらく経ってから、最大で 1 時間後に接続を終了したいのですが、これはマウントを起動するために使用するのatfusermount -u同じコマンドまたはスクリプト内でコマンドを起動することを意味しますsshfs

ただし、接続でファイルがまだ開かれているかどうかに関係なくコマンドが機能するようにfusermountしたいのですが、ファイルが使用中の場合は失敗する可能性があることに気づきました。at

私の経験では、唯一信頼できる方法は、fusermountコマンドを root として実行するか、コマンドsshfsを介して接続を終了することですkill

ルートとして実行せずに強制的に切断する方法は他に何かありますか? 問題は、ファイルがまだ開いているときにターミナルにいない可能性があるのですが、セキュリティのために、コマンドをキャンセルしない限り接続を切断する必要があることですat

答え1

マウント ポイントを解放するだけで、SSH 接続を終了する必要がない場合は、 を実行できますfusermount -z /mount/point。これにより、遅延アンマウントが実行されます。マウント ポイントはマウントに関連付けられなくなりますが、そのマウント上の開いているファイルがすべて閉じられるまでマウントは消えません。

SSH 接続を閉じるだけでマウントは気にしない場合は、SFTP サーバー プロセスを強制終了するだけです。これが FUSE の優れた点です。サービスを提供しているプロセスを強制終了すると、サービスがなくなります。マウントはシステム リソースをロックできません。ファイル システムにアクセスしようとするプロセスにはエラー (ENOTCONN「トランスポート エンドポイントが接続されていません」) が発生します。

そのファイルシステム上でファイルを開いているプロセスを強制終了したい場合は、fuserコマンド(F が「file」の最初の文字であること以外は FUSE とは関係ありません)。

fuser -k /mount/point

関連情報