网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 系统管理 > 文章  
Linux操作系统下信号与进程控制解析
文章来源: 赛迪网技术社区 文章作者: jinkong 发布时间: 2007-02-28   字体: [ ]  
 

  按CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号。kill和killall这两个命令按照默认的设置都发出一个SIGTERM信号(编号15)。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释。因此,如果你的程序对于KILL命令的反应与你预期不同,很可能是被KILL的目标程序的问题。

  终止一个父进程通常也终止了它的子进程。不过,情况并不总是如此。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:

$ ps axf
22371 ? R 2:35 _ konsole [kdeinit]
22372 pts/3 Ss 0:00 | _ /bin/bash
24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum
22381 pts/4 Rs 0:00 | _ /bin/bash
24323 pts/4 R+ 0:00 | | _ ps axf

  现在,回到SIGHUP的话题。SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号”。你如何发送一个SIGHUP信号呢?这里有几种方式:

# kill -HUP [pid]
# killall -HUP [process-name]
# kill -1 [pid]
# killall -1 [process-name]

  因此,你可以使用PID或者名称,信号名称或者号码。那么为什么要这样做而不使用 /etc/init.d/foo命令重新启动呢?使用它们自己的init(初始化)文件来控制服务是优先选择的方式,因为这些文件通常包含健全和错误检查以及额外的功能。使用“kill”命令和信号的主要原因是尽可能明确地终止挂起和失控的进程,而不必重新启动或者登出。

  终止进程

  正如你在关于信号的man page中所看到的,有十几种控制进程的方法。下面是一些常用的方法:

kill -STOP [pid]

  发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。

kill -CONT [pid]

  发送SIGCONT (19,18,25)重新开始一个停止的进程。

kill -KILL [pid]

  发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。

kill -9 -1

  终止你拥有的全部进程。

  SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。Bash shell的Kil命令l,Bash外壳包含一个内置的kill命令,当执行下面命令:

$ type -all kill
kill is a shell built-in
kill is /bin/kill

  命令的结果表明有两个kill命令,一个是BASH的内置命令,另一个是/bin/kill可执行程序。一般来说这两个命令不太可能遇到冲突的情况,不过,如果你确实遇到了kill命令行为异常时,你可以明确的指定/bin/kill命令。

  你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用,因为这是你进入维护Linux系统领域的门票。这些知识能够让你像做外科手术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统,就像我们知道的某些蹩脚的操作系统那样。

  (参考链接: http://linux.ccidnet.com/art/302/20070227/1025455_1.html)

 
推荐文章
·介绍几种Linux备份方法便于日常
·用Linux系统引导CD为服务器排忧
 
 
共2页: 上一页 [1] 2 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·如何解决Linux的Root密
·用Linux系统引导CD为服
·介绍几种Linux备份方法
·Linux笔记本如何延长电
·利用FAM和IMON在Linux下
·新招实现Linux下局域网
·活学活用Linux操作系统
·如何在Linux下使用红外
相关文章
·Linux环境进程间通信:
·用Linux系统引导CD为服
·深刻理解Linux进程间通
·如何使用Linux脚本对无
·Linux环境进程间通信(二
·BabyLinux操作系统的制
·BabyLinux操作系统的制
·自己动手做一个最小的Li
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统