sshfs
しばらく経ってから、最大で 1 時間後に接続を終了したいのですが、これはマウントを起動するために使用するのat
とfusermount -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