サーバーが応答しない場合、プロセスは中断することなくスリープモードになります。

サーバーが応答しない場合、プロセスは中断することなくスリープモードになります。

私は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 reconnectsshfsのパラメータとして使用することです。残念ながら、コンピュータが目を覚ました後でもアプリケーションが応答しなくなる現象は依然として発生します。

ベストアンサー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使用してください。killpid

kill -9 1268

親プロセスを終了すると、子プロセスも終了する必要があります。

おすすめ記事