masalibの日記

システム開発、運用と猫の写真ブログです

ツールの実行中にSSHセッションが切れてしまう場合の対応

私の家のネットワーク環境は顧客対応が悪いで有名なJ◯omさんです。
普通にネットワークが繋がらない事があります。しかも告知がありません。
それはさておき、サーバーにSSH接続してツールを実行している時にいきなりセッションが切断されると 困るので時間がかかるツールに関してはセッションが切れてもいいようにしています。
その対応を記載します

SSH接続が途切れてもサーバー上でツールが実行し続けるためには、セッション管理ツールを使用するのが一般的な方法です。screenやtmuxなどのツールを使えば、セッションが切断された後もプロセスをバックグラウンドで実行し続けることができます。また、nohupコマンドを使用する方法もあります。ここでは、これらの方法について説明します。

screenを使用する方法

screenは、複数のセッションを同時に開いたり、セッションを切断しても作業を継続できるようにするツールです。

  • screenをインストールしていない場合は、まずインストールします。

  • screenセッションを開始します。

    screen

  • 必要なコマンドを実行します。

  • セッションから一時的にデタッチするには、Ctrl + a、続けてdを押します。

  • セッションに再接続するには、screen -rコマンドを使用します。

2. tmuxを使用する方法

tmuxもscreenと同様の機能を提供するツールですが、よりモダンで機能が豊富です。

  • tmuxをインストールしていない場合は、まずインストールします。

  • tmuxセッションを開始します。

    tmux

  • 必要なコマンドを実行します。

  • セッションからデタッチするには、Ctrl + b、続けてdを押します。

  • セッションに再接続するには、tmux attach-sessionコマンドを使用します。

3. nohupを使用する方法

nohupは、ハングアップシグナルを無視してコマンドを実行し、セッションが切断されてもプロセスを継続させるコマンドです。

  • nohupを使用してコマンドを実行します。

    nohup コマンド &

    • ここで、コマンドは実行したいコマンドに置き換えてください。&はコマンドをバックグラウンドで実行するためのものです。
  • 実行したコマンドの出力は、デフォルトでnohup.outに保存されます。

これらの方法を使えば、SSHセッションが切断された後もサーバー上でツールを実行し続けることが可能です。 どのツールを使用するかは、個人の好みや具体的な要件に応じて選択してください。

自分はインストールがめんどくさいのでnohupで対応しています。 セッションなどが残ってしまう可能性があるので最後はプロセスを殺して対応しています

ps -ef | grep main.py
kill -9 {pid}