非アクティブな ssh セッションを閉じるにはどうすればよいですか? まず、w コマンドを使用して非アクティブまたはアイドル状態の ssh セッションを特定し、次に pstree コマンドを使用してアイドル状態のセッションの PID を取得し、最後に kill コマンドを使用してセッションを閉じます。 |
SSH 経由でサーバーで作業しているときに、ネットワーク、電源、またはローカル PC の再起動によりセッションが切断されたと仮定します。
作業を続けるためにサーバーに再度ログインしてもしなくても構いませんが、常に閉じられていない ssh セッションが残されます。
非アクティブな ssh セッションを閉じるにはどうすればよいですか? まず、w コマンドを使用して非アクティブまたはアイドル状態の ssh セッションを識別し、次に pstree コマンドを使用してアイドル セッションの PID を取得し、最後に kill コマンドを使用してセッションを閉じます。
推奨読書: Mosh(Mobile Shell ) - SSH リモート接続の最良の代替手段
非アクティブまたはアイドル状態の SSH セッションを特定する方法
ログイン システムは、w コマンドを使用して、現在ログインしているユーザーの数を確認します。独自のセッション接続を特定した場合は、他の非アクティブまたはアイドル状態の ssh セッションをメモして閉じることができます。
現在の例では、2 人のユーザーがログインしていることがわかります。そのうちの 1 人は現在 w コマンドを実行している ssh セッションで、もう 1 人は前のアイドル セッションです。
#w 10:36:39 アップ 26 日、20:29、2 ユーザー、負荷平均: 0.00、0.02、0.00 ログインからのユーザー TTY@ IDLE JCPU PCPU WHAT ルート ポイント/0 219.91.219.14 10:34 28.00 秒 0.00 秒 0.00 秒 -bash ルート ポイント/2 219.91.219.14 10:36 0.00s 0.00s 0.00sw
SSHセッションのPIDを取得する方法
アイドル状態の ssh セッションを閉じるには、アイドル状態のセッションの親プロセスの PID が必要です。pstree コマンドを実行すると、すべてのプロセスを含むツリー図を表示して、親プロセスの pid を取得できます。
以下の例のような出力が得られるはずです。pstree コマンドの出力はこれよりもはるかに多くなりますが、理解を容易にするために多くの無関係なコンテンツを削除しました。
# pstree -p init(1)-+-abrtd(2131) |-acpid(1958) |-httpd(32413)-+-httpd(32442) | |-ミンゲティ(2198) |-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378) | |-php(32456)-+-php(32457) | |-sshd(2023)-+-sshd(10132)---bash(10136) | `-sshd(10199)---bash(10208)---pstree(10226) |-udevd(774)-+-udevd(2191) `-udevd(27282)
上記の出力から、sshd プロセスとブランチのツリー図がわかります。sshd のメインプロセスは sshd(2023) で、他の 2 つのブランチは sshd(10132) と sshd(10199) です。
記事の冒頭で述べたように、そのうちの 1 つは新しいセッション接続 sshd(10199) で、pstree コマンドが実行されていることを示しているため、アイドル セッションは sshd(10132) としての別のプロセスです。
推奨書籍: 標準 Web ブラウザ経由でセキュア シェル (SSH) サーバーにアクセスする方法推奨書籍: PSSH -
複数の Linuxサーバー でコマンドを並行して実行する
アイドル状態の SSH セッションを閉じる方法
アイドルセッションに関する情報はすべて揃っています。そこで、kill コマンドを使用してアイドル状態のセッションを閉じましょう。以下の PID をサーバー上のアイドル セッション PID に置き換えてください。
# キル -9 10132
(LCTT 注釈: これは別のツール pkill です。セッションを閉じるには pkill -t pts/0 -kill を使用します。debian 8 で利用可能ですが、一部のバージョンでは -kill の位置を変更する必要があるようです)
アイドル状態のセッションが閉じられているかどうかを再度確認します
もう一度 w コマンドを使用して、アイドル状態のセッションが閉じられているかどうかを確認します。そうです、私自身の現在のセッションだけが残っているので、アイドル状態のセッションは閉じられました。
#w 10:40:18 アップ 26 日、20:33、1 ユーザー、負荷平均: 0.11、0.04、0.01 ログインからのユーザー TTY@ IDLE JCPU PCPU WHAT ルート ポイント/2 219.91.219.14 10:36 0.00s 0.00s 0.00sw
推奨読書: rtop - SSH 経由でリモート サーバーを監視するための使いやすいツール
推奨読書: DSH - 複数の Linux サーバーでコマンドを同時に実行する
pstreeコマンドで再度確認してみる
再度pstreeコマンドで確認してください。はい、私自身の ssh セッションだけがまだ残っています。
# pstree -p init(1)-+-abrtd(2131) |-acpid(1958) | |-httpd(32413)-+-httpd(32442) | |-ミンゲティ(2198) |-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378) | |-php(32456)-+-php(32457) | |-sshd(2023)---sshd(10199)---bash(10208)---pstree(10431) |-udevd(774)-+-udevd(2191) `-udevd(27282)