免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2560 | 回复: 3

[原创]清除指定终端所有进程的脚本 [复制链接]

论坛徽章:
0
发表于 2005-10-11 21:20 |显示全部楼层
功能如题,支持多参数,-h为简单介绍,请各位拍砖吧,谢谢

  1. #!/bin/ksh
  2. #清除指定终端所有进程的shell   V050721
  3. #改进为支持命令行多参数,即可一次性kill多个指定的tty进程 V070521
  4. #改进多tty时显示排列问题 V050825
  5. #修正普通用户使用时的BUG及改进界面 V050926
  6. #再次精简代码  V051011

  7. echotty()
  8. {
  9. echo
  10. n=0
  11. for i in `echo $*`
  12. do
  13. ((n=n+1))
  14. test $((n%6)) -eq 0 && printf "\n\n%5s"$i  || printf "%5s"$i
  15. done
  16. }

  17. #trap "rm $HOME/killpid >/dev/null 2>&1 ; tput sgr0 ; echo ; exit 0" 0 1 2 3 9 15
  18. clear
  19. tput bold

  20. if [ "$1" = '-h' ]
  21. then
  22. tput cup 5 10
  23. echo "     清除指定终端所有进程的shell            V050628\n  "
  24. echo "***本shell由乐山市沙湾区邮政局宋涛调试成功,感谢使用 ^_^ ***"
  25. echo
  26. echo
  27. echo "调用格式:   "`basename $0` "[ -h ] [ 终端号 ]"
  28. echo "      -h:   帮助"
  29. echo "  终端号:   欲清除死进程的终端号\n"  
  30. echo "  例: `basename $0` ttyp1   #杀死终端ttyp1所有进程\n   "
  31. echo '此时一般用此shell清除该终端所有进程后终端可恢复正常登陆;'
  32. echo '若还是不能登陆,可由root做 >/dev/死锁终端 (此时终端必须'
  33. echo "是开机状态),还是不行时请重启,还是不行请报警,呵呵\n"
  34. exit 0
  35. fi

  36. if [ $# -eq 0 ]
  37. then
  38. echo "\n────────────── 清除指定终端进程─────────────"
  39. test  $(logname) = "root" && { ttyname=$(who | awk '{printf("\n%20s\n",$2)}') ; user="root" ;  } \
  40. || { ttyname=$(who | grep $(logname) | awk '{printf("\n%20s\n",$2)}') ; user="user" ; }
  41. echotty $ttyname
  42. echo "\n\n ───────────────────────────────────"
  43. echo "\n请输入要杀死进程的终端: \c"
  44. read zdh
  45. test  "$zdh" = "q" &&  exit 0
  46. else
  47. test `logname` = "root" && user="root" || user="user"
  48. zdh=$*
  49. fi

  50. for kt in $zdh
  51. do
  52. if [ "$user" = "root" ]
  53. then
  54. ps -t $kt|grep -v PID|awk '{print "kill -9 " $1 | "sort -k3 -nr > $HOME/killpid" }'
  55. else
  56. ps -t $kt|grep -v PID|awk '{print "/tcb/bin/asroot kill -9 " $1 | "sort -k3 -nr > $HOME/killpid"}'
  57. fi

  58. sh $HOME/killpid >/dev/null 2>&1
  59. end=$?
  60. test -e /etc/fuser -o -x /etc/fuser && fuser /dev/$kt >/dev/null 2>&1
  61. test $end -eq 0 && echo "\n          清除 ${kt} 进程成功\n" || \
  62. echo "\n          清除 ${kt} 进程失败\n"
  63. done
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-10-11 22:30 |显示全部楼层

[原创]清除指定终端所有进程的脚本

linux下有个pkill,可以通过进程名来杀,例如:
pkill -9 procname

论坛徽章:
0
发表于 2005-10-12 01:03 |显示全部楼层

[原创]清除指定终端所有进程的脚本

styr兄:
ps -t $kt|grep -v PID|awk '{print "kill -9 " $1 " }' |sh

直接在后面用管道加个sh可否??


烈火兄的pkill不错         

论坛徽章:
0
发表于 2005-10-12 11:25 |显示全部楼层

[原创]清除指定终端所有进程的脚本

偶只有sco.....pkill只能学记下来,以后有机会就用了。

还要 sort -k3 -nr  ,PID从大到小开始kill
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP