• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 编程开发 >> shell教程 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

 
 

本类阅读排行

  • shell编程例子--一个简单的目..
  • Shell介绍
  • Shell初学者的入门知识
  • shell编程例子--一个.login例..
  • Linux程式设计-11.ShellScri..
  • Shell编程
  • 从ifconfig中得到IP地址
  • Linux程式设计-11.ShellScri..
  • Linux程式设计-11.ShellScri..
  • shell要如何分类呢?
  • Linux程式设计-11.ShellScri..
  • Shell递归程序设计-目录列表
  • 两个很详细的shell实例
  • Shell介绍
  • Linux程式设计-11.ShellScri..
  • Bash中的变量
  • 批量添加用户
  • Linux程式设计-11.ShellScri..
  • Linux程式设计-11.ShellScri..
  • 我要如何将csh的stdout与std..
 
 

也谈在Unix系统中杀死相关终端的进程

  • 日期:2007-10-20     人气:     出处:     作者:
  • 字体大小:
  • 小
  • 中
  • 大

今年第31期《计算机世界》报上登载了“在Unix系统中利用程序实现kill命令”一文,文章介绍了在Unxi系统中用C语言实现kill命令的方法。笔者在实践中找到了另外一种方法,通过Unix系统下Shell编程可以完成同样的功能,而且使用起来更加方便、灵活、便于维护。本程序名为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/null2>&1if[$?=1];thenecho“\a终端设备类型不对!”exit1fi2.把终端名$1作为变量,由echo命令通过管道方式交给awk语句去处理,整个处理过程实际上就是用“ps-f-t”命令检查出所要杀死终端的相应进程号,处理的结果通过管道方式由/bin/sh完成。echo$1|awk’{print“ps-f-t”$0}’|/bin/sh以终端为/dev/tty01为例,执行的结果为:UIDPIDPPIDCSTIMETTYTIMECMDroot3231020:07:31tty0100:00:00/bin/loginbootroot360323220:07:37tty0100:00:00-shroot4043601420:09:57tty0100:00:00-shroot410404320:09:57tty0100:00:00/bin/shroot411410020:09:57tty0100:00:00ps-f-ttty01这里第2列(PID)为进程标识号,终止任务需要的就是这个标识号,第8列(CMD)表示任务的程序名。3.有时候有些终端执行的任务可能比较多,因而与终端有关的进程比较多,我们没有必要将与这个终端有关的正在运行的所有进程全部杀死。只需要将这个终端的sh进程杀死,就终止了这个终端的所有任务。因为在Unix系统中,sh是用户层和核心层的接口,Unix系统就是通过它对终端上所有任务进行调度和管理的,没有它任何一台终端上的任务都无法完成。因此,要想重新激活某个终端,只要先找出与这个终端相关的sh进程号,然后将其杀死即可达到目的。awk’$8~/sh/{if(NR==1)next;print“kill-9”$2}’|\/bin/sh〉/dev/null2>&1完整程序如下:grep$1/etc/ttytype>/dev/null2>&1if[$?=1];thenecho“\a终端设备类型不对!”exit1fiecho$1|awk’{print“ps-f-t”$0}’|/bin/sh|\awk’$8~/sh/{if(NR==1)next;print“kill-9”$2}’|\/bin/sh〉/dev/null2>&1小结
所有命令通过管道技术串联起来,把上一个命令的输出结果作为下一个命令的输入,最后一条命令将最终的结果输出。和C语言所编写的程序比较起来,一方面Unix系统中Shell编程比较简单明了,程序本身比较短小,不像C语言那样复杂;另一方面Shell是交互式程序,不需要编译便可直接使用,因而比C语言更便于维护。需要说明的是,由于在多数情况下,一般用户没有权限执行Unix系统的kill命令杀死不同组的一般用户的进程,而超级用户可以终止正在系统中运行的所有用户的进程,因此要尽可能地在超级用户root状态下执行kill_tty程序。

相关文章
  • QQ帮你突破网吧硬盘访问限制
  • 局域网内盗用IP的安全问题
  • 邮件安全攻略:只要糖衣不要炮弹
  • 手机病毒的分类及其防范措施
  • 如何防止黒客远程盗取QQ密码
  • 始料未及,谁在控制电脑重新启动
  • 网络常见木马的手工清除方法
  • 魔高一尺 道高一丈
  • 防火墙日志记录让蠕虫病毒无处可逃
  • 提防他人动用电脑另有妙招
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号