快速业务通道

linux查看进程和终止进程

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15
0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/nagios.cfg

  这个输出是经过简化的.你在系统中可以看到更多的行和栏目.如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM列中发现它们.找到失控的进程的一种更快捷的方法是使用top命令,按照默认的设置,使用占用CPU资源最多的进程在最上面显示.我们可以使用一条 “yes”命令来测试一下:

  $ yes carla is teh awesum

  这个命令将以很高的速度反复显示“carla is teh awesum”,直到你停止它运行.这将使你的CPU使用率达到警戒线.

  $ top

  ...

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND

  12144 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole

  22236 carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes

  分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令,这是“yes”命令是在konsole终端程序中运行的.如果在一个“真正的”控制台(按Ctrl alt f2键)中运行同样的命令序列,你将看到“yes”命令被排在第一位.

  有许多停止“yes”命令运行的方式.如果你要回到运行它的shell中,按CTRL c键就可以了.或者你可以在另一个shell中用“kill”命令停止“yes”命令的运行,Kill命令后面跟PID或者命令名称,如下如示:

  $ kill 22236

  或者

  $ killall yes

  按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命令,一

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号