自分以外の端末を殺すスクリプト
投稿: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)