VPSへのリモートSSH接続が失われることがあります。長時間実行されるプロセスにはscreen
を使用しますが、ボックスへの接続が失われると、screen
セッション内で実行されるプロセス以外に実行していたプロセスはどうなるのでしょうか。
ボックスへの接続を再確立すると、接続が失われたときに実行されていたbashおよびsshdプロセスはどうなりましたか?今日、私は繰り返し接続を失い、通常よりもはるかに多くのbashおよびsshdプロセスに気づきました。
プロセスがぶら下がっている場合、それらを強制終了する必要がありますか?以前のセッションからどのプロセスが放棄されたかをどのように判断できますか?
返信ありがとうございます!
通常、プロセスは切断時に終了しますが、古いSSHセッションはタイムアウトを待機しているか、競合状態のために 終了時にハング になる可能性があります。
必ずしもそうする必要はありませんが、おそらく古いセッションを終了する必要があります。タイプps aux
コンソールでプロセスを一覧表示してから、kill PID
ハングしたsshセッションごと。ここで、PIDはそのセッションのPID(プロセスID)です。古いハングしたセッションのPIDは、現在の新しいセッションよりも低くする必要があります。
切断した後も実行を継続したい長時間実行プロセスがある場合は、コマンドの前にNohupを付けることができます。
Nohup badblocks -nvs /dev/sda &
Sshセッションが終了すると、関連付けられている疑似ttyが閉じられ、リセットされます。通常、シェルとそのttyに関連付けられている他のプロセスは、それを作成したプロセスの子プロセスであるため、強制終了されます。プロセスがぶら下がっている場合、おそらくそれらはバックグラウンドされていましたか?はい、彼らはおそらく殺されるべきです-清潔さは敬虔さの隣にあります。それらはいくつかのリソースを消費します-通常はそれほど多くはありませんが、しばらくすると合計される可能性があります。