私はsshfsを使用してリモートサーバーのディレクトリとファイルをマウントして対話します。私が使用するコマンドは次のとおりです。
sshfs -o follow_symlinks host:dir mountpoint -o reconnect
一定期間アクティビティがなく、コンピュータをサスペンドモードからオフにすると、リモートサーバーのリソースを使用するプロセスが応答を停止することがあります。 この問題は主にNautilus(ファイル)で発生し、開いているPDFファイルがリモートサーバーにある場合はOkularでも発生する可能性があります。
これらのプロセスを終了しようとするとkill -9
機能しません。たとえば、Nautilusが応答しないときにプロセスを終了するために使用するコマンドは次のとおりです。
toto:~/.ssh$ ps aux | grep nautilus
toto 21435 0.4 0.3 1440760 123276 ? Sl 09:32 1:48 /usr/bin/nautilus --gapplication-service
toto 96139 0.0 0.0 9216 2428 pts/4 S+ 15:44 0:00 grep --color=auto nautilus
toto:~/.ssh$ kill -9 21435
私は学んだここなぜなら邪魔されない睡眠。 ~からその他の議論、私の考えの解決策は-o reconnect
sshfsのパラメータとして使用することです。残念ながら、コンピュータが目を覚ました後でもアプリケーションが応答しなくなる現象は依然として発生します。
答え1
ServerAliveInterval
私はand ServerAliveCountMax
/ orを試してみます。ClientAliveInterval
ServerAliveIntervalは、接続を維持し、パイプ破損の問題を回避するための最も一般的な戦略のようです。
sshd_configのオプションはServerAliveInterval
正確に何をしますか?ClientAliveInterval
シェルを含む:
sshfs -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o follow_symlinks host:dir mountpoint -o reconnect
クライアントは60秒(ServerAliveInterval時間)の間アイドル状態で待機した後、「no-op空のパケット」をサーバーに送信し、応答を待ちます。応答がない場合は、上記のプロセスを3(ServerAliveCountMax)回(180秒)まで続けます。サーバーがまだ応答しない場合は、クライアントのSSH接続が失われます。
ClientAliveCountMax
ClientAliveCountMax
サーバー側でも役に立ちます。これは、クライアントが切断する前に応答しない可能性がある時間制限です。デフォルトは3(3つのClientAliveIntervals)です。
構成~/.ssh/config
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
親プロセスの終了
応答しないプロセスを直接終了しようとする代わりに、親プロセスを終了します。
ppid
応答しないプロセスで使用される親プロセスIDの検索
ps -ef
この場合、応答しないプロセスの親プロセスは、sshfs
コマンドによって生成されたプロセスです。次のコマンドは、実行中のプロセスのリストからそれらを見つけるのに役立ちます。
ps -ef | grep sshfs
がある場合と一緒にコマンドをppid
使用してください。kill
pid
kill -9 1268
親プロセスを終了すると、子プロセスも終了する必要があります。