科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Unix系统kill_tty进程浅析

Unix系统kill_tty进程浅析

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Unix系统中杀死相关终端进程浅析,用grep 命令检查在 /etc/ttytype文件当中是否存在参数$1, 因为所有正在使用的终端都在/etc/ttytype文件中有相应的设备类型,如果在/etc/ttytype文件里找不到参数$1所表示的终端号,说明$1是不合法的,终止程序运行。

来源:中国IT实验室 2013年3月5日

关键字: unix 进程

  • 评论
  • 分享微博
  • 分享邮件

ZDNet至顶网软件频道 本程序名为kill_tty,设计思路是把需要杀死的终端名作为kill_tty命令的参数,充分运用Unix系统的管道技术与awk语句的灵活性,找出相应终端的进程号,然后将其杀死。

命令格式:kill_tty 终端设备名。

实现步骤

1. 检验kill_tty命令参数$1的合法性

用grep 命令检查在 /etc/ttytype文件当中是否存在参数$1, 因为所有正在使用的终端都在/etc/ttytype文件中有相应的设备类型,如果在/etc/ttytype文件里找不到参数$1所表示的终端号,说明$1是不合法的,终止程序运行。

grep $1 /etc/ttytype>/dev/null 2>&1

if [ $? = 1 ] ; then

echo "a终端设备类型不对!"

exit 1

fi

2. 把终端名$1作为变量,由echo命令通过管道方式交给awk语句去处理,整个处理过程实际上就是用"ps -f -t "命令检查出所要杀死终端的相应进程号,处理的结果通过管道方式由/bin/sh完成。

echo $1 | awk '{ print "ps -f -t " $0}'| /bin/sh

以终端为/dev/tty01为例,执行的结果为:

UID PID PPID C STIME TTY TIME CMD

root 323 1 0 20:07:31 tty01 00:00:00 /bin/login boot

root 360 323 2 20:07:37 tty01 00:00:00 -sh

root 404 360 14 20:09:57 tty01 00:00:00 -sh

root 410 404 3 20:09:57 tty01 00:00:00 /bin/sh

root 411 410 0 20:09:57 tty01 00:00:00 ps -f -t tty01

这里第2列(PID)为进程标识号,终止任务需要的就是这个标识号,第8列(CMD)表示任务的程序名。

3. 有时候有些终端执行的任务可能比较多,因而与终端有关的进程比较多,我们没有必要将与这个终端有关的正在运行的所有进程全部杀死。只需要将这个终端的sh进程杀死,就终止了这个终端的所有任务。因为在Unix系统中,sh是用户层和核心层的接口,Unix系统就是通过它对终端上所有任务进行调度和管理的,没有它任何一台终端上的任务都无法完成。因此,要想重新激活某个终端,只要先找出与这个终端相关的sh进程号,然后将其杀死即可达到目的。

awk '$8~/sh/ { if ( NR == 1 ) next; print " kill -9 " $2}'|

/bin/sh〉/dev/null 2>&1

完整程序如下:

grep $1 /etc/ttytype>/dev/null 2>&1

if [ $? = 1 ] ; then

echo "a 终端设备类型不对!"

exit 1

fi

echo $1 | awk '{ print "ps -f -t "$0}'|/bin/sh|

awk ' $8~/sh/ { if ( NR==1 ) next; print " kill -9 "$2}' |

/bin/sh〉/dev/null 2>&1

小 结

所有命令通过管道技术串联起来,把上一个命令的输出结果作为下一个命令的输入,最后一条命令将最终的结果输出。和C语言所编写的程序比较起来,一方面Unix系统中Shell编程比较简单明了,程序本身比较短小,不像C语言那样复杂;另一方面Shell是交互式程序,不需要编译便可直接使用,因而比C语言更便于维护。

需要说明的是,由于在多数情况下,一般用户没有权限执行Unix系统的kill命令杀死不同组的一般用户的进程,而超级用户可以终止正在系统中运行的所有用户的进程,因此要尽可能地在超级用户root状态下执行kill_tty程序。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章