
アイドルSSHセッションを終了したい。このリモートサーバーは多くのユーザーが使用していますが、私が所有しているセッションのPIDをどのように識別できますか?
これを実行すると、who
ユーザー名でタグ付けされた SSH セッションのリストが表示されます。
$ who
me pts/0 2020-11-23 18:05 (tmux(id).%0)
me pts/1 2020-11-06 13:28 (<ip 1>)
someone pts/2 2020-11-09 09:36 (<ip 2>)
someone pts/3 2020-11-26 20:26 (<ip 2>)
...
を実行すると、pstree
セッションにユーザー名タグが付けられなくなります。
$ pstree -p | grep sshd
|-sshd(930)-+-sshd(3518)---sshd(3536)---python(5736)-+-{python}(5744)
| |-sshd(4285)---sshd(4308)
| |-sshd(5428)---sshd(5450)
...
答え1
ルート以外では他のプロセスでは何もできないので、sshd
すべてのプロセスにシグナルを送信するだけでは危険ではありません。
pkill sshd
独自のプロセスに明示的に制限するには:
pkill -U "$USER" sshd
USER
または実行中のシェルで変数が使用されていない場合は、"$LOGNAME"
代わりに試して"$USER"
ください。
pkill -U "$(id -un)" sshd
このコマンドのマニュアルも参照してくださいpkill
。
一致するプロセスのプロセスIDのリストを取得するには、pgrep
代わりに使用してください。表示または一覧表示する場合にのみ、or withをpkill
使用してください。pkill
pgrep
-o
最も古いプロセス。
答え2
その場合は、リモートサーバーで実行しないroot
でください。pkill sshd
それ以外の場合は再接続できませんssh: connect to host yourdomain.com port 22: Connection refused
。代わりに:
ランニング
w
。最後の列(ラベル付き)WHAT
でアイドルコマンドを見つけます。次に、2番目の列(ラベル付きTTY
)を見てアイドルセッションを見つけます。例:pts/0
。ランニング
ps aux | grep pts/0
。最後の列でアイドルコマンドを見つけます。そのPIDは2番目の列にあります(例:)12345
。また、-bash
対応するPIDを見つけて記録します(例:)12346
。kill 12345; kill 12346
上記のPIDで実行してください。再実行
w
。pts/0
再表示してはいけません。