- 论坛徽章:
- 0
|
功能如题,支持多参数,-h为简单介绍,请各位拍砖吧,谢谢
- #!/bin/ksh
- #清除指定终端所有进程的shell V050721
- #改进为支持命令行多参数,即可一次性kill多个指定的tty进程 V070521
- #改进多tty时显示排列问题 V050825
- #修正普通用户使用时的BUG及改进界面 V050926
- #再次精简代码 V051011
- echotty()
- {
- echo
- n=0
- for i in `echo $*`
- do
- ((n=n+1))
- test $((n%6)) -eq 0 && printf "\n\n%5s"$i || printf "%5s"$i
- done
- }
- #trap "rm $HOME/killpid >/dev/null 2>&1 ; tput sgr0 ; echo ; exit 0" 0 1 2 3 9 15
- clear
- tput bold
- if [ "$1" = '-h' ]
- then
- tput cup 5 10
- echo " 清除指定终端所有进程的shell V050628\n "
- echo "***本shell由乐山市沙湾区邮政局宋涛调试成功,感谢使用 ^_^ ***"
- echo
- echo
- echo "调用格式: "`basename $0` "[ -h ] [ 终端号 ]"
- echo " -h: 帮助"
- echo " 终端号: 欲清除死进程的终端号\n"
- echo " 例: `basename $0` ttyp1 #杀死终端ttyp1所有进程\n "
- echo '此时一般用此shell清除该终端所有进程后终端可恢复正常登陆;'
- echo '若还是不能登陆,可由root做 >/dev/死锁终端 (此时终端必须'
- echo "是开机状态),还是不行时请重启,还是不行请报警,呵呵\n"
- exit 0
- fi
- if [ $# -eq 0 ]
- then
- echo "\n────────────── 清除指定终端进程─────────────"
- test $(logname) = "root" && { ttyname=$(who | awk '{printf("\n%20s\n",$2)}') ; user="root" ; } \
- || { ttyname=$(who | grep $(logname) | awk '{printf("\n%20s\n",$2)}') ; user="user" ; }
- echotty $ttyname
- echo "\n\n ───────────────────────────────────"
- echo "\n请输入要杀死进程的终端: \c"
- read zdh
- test "$zdh" = "q" && exit 0
- else
- test `logname` = "root" && user="root" || user="user"
- zdh=$*
- fi
- for kt in $zdh
- do
- if [ "$user" = "root" ]
- then
- ps -t $kt|grep -v PID|awk '{print "kill -9 " $1 | "sort -k3 -nr > $HOME/killpid" }'
- else
- ps -t $kt|grep -v PID|awk '{print "/tcb/bin/asroot kill -9 " $1 | "sort -k3 -nr > $HOME/killpid"}'
- fi
- sh $HOME/killpid >/dev/null 2>&1
- end=$?
- test -e /etc/fuser -o -x /etc/fuser && fuser /dev/$kt >/dev/null 2>&1
- test $end -eq 0 && echo "\n 清除 ${kt} 进程成功\n" || \
- echo "\n 清除 ${kt} 进程失败\n"
- done
复制代码 |
|