特定の端末のセッションリーダーを kill するシェルスクリプト
これを用いると ssh-agent や screen などの入れ子内にあるシェルから一気に上位ににあるシェルまでを終了させることができます。
引数なしで呼び出すとログイン中のユーザーが使用している端末をすべて表示します。
引数に端末名を指定するとその端末の持っているセッションリーダーであるプロセスに対し SIGHUP を送信します。
コード
#!/usr/bin/env sh if [ $# = 0 ] then ps j | awk '{ if (NR != 1) print $5 }' | sort -u else tty_name=`echo $1 | sed -e "s/\//\\\\\\\\\\//g"` kill -HUP `ps j | awk '{if (NR != 1 && $5 ~ /'$tty_name'/ && $7 ~ /S/) print $2}'` fi