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

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

sshfs特定の時間(最大1時間)が経過したら、接続を終了したいと思います。つまり、インストールを開始したのと同じコマンドまたはスクリプトをat使用して接続を開始します。fusermount -usshfs

ただし、ファイルが使用中の場合は、接続にファイルがまだ開いているかどうかにかかわらず、コマンドが機能したいのですが、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

関連情報