ルモーリン

自分以外の端末を殺すスクリプト

投稿:2022-05-15

自宅の回線は接続後ぴったり24時間で切断されてしまいます。 零細プロバイダと契約してるから仕方ない(笑)。 VPSを使っている際に切断することもしばしばあります。 ログインし直すとさっきまで使っていた端末のプロセスが10個くらい残っています。 残ったプロセスを手軽に殺したい。

#!/bin/bash

pts=$(who am i | awk --source '{print $2}')
echo この端末:$pts

for pid in $(ps -FA | grep pts | grep --invert-match $pts | awk --source '{print $2}')
do
	echo kill -s SIGKILL $pid
	$(kill -s SIGKILL $pid)
done

whoコマンドで自分の端末を調べて、psとgrepとawkで自分以外の端末のプロセスIDを調べてSIGKILLを送ります。

whoコマンドで自分の端末を表示

pts=$(who am i)
*******  pts/0        2022-05-15 09:13 (*******************************)

第2パラメタを残す

pts=$(who am i | awk --source "{ print $2; }")
pts/0

psコマンドでプロセス一覧をとる

ps -FA
*******  11020 11018  0 29155  3060   1 09:13 pts/0    00:00:00 -bash
*******  23178 23177  0 29155  3060   1 09:13 pts/1    00:00:00 -bash
root      1032     1  0 117584 1612   0  2020 ?        01:41:16 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
(サンプルのため数行だけ)

端末のプロセスを残す

grep pts
*******  11020 11018  0 29155  3060   1 09:13 pts/0    00:00:00 -bash
*******  23178 23177  0 29155  3060   1 09:13 pts/1    00:00:00 -bash

自分の端末以外を残す

grep --invert-match $pts
*******  23178 23177  0 29155  3060   1 09:13 pts/1    00:00:00 -bash

第2パラメタを残す

awk --source '{print $2}'
23178

プロセスを殺す

$(kill -s SIGKILL $pid)