linux下杀死进程全权讲解

来自个人维基
跳转至: 导航搜索

  经过搜集和整理相关的linux杀死进程的材料,在这里本人给大家推荐本篇文章,希望大家看后会有不少收获。


  1. kill

  作用:根据进程号杀死进程

  用法: kill [信号代码] 进程ID

  举例:

  [root@localhost ~]# ps auxf |grep httpd

  注意:kill -9 来强制终止退出

  举例 [root@localhost ~]# ps aux |grep gaim

  或者 [root@localhost ~]# pgrep -l gaim 5031 gaim

  5031 gaim

  [root@localhost ~]# kill -9 5031

  特殊用法:

  kill -STOP [pid]

  发送SIGSTOP (17,19,23)停止一个进程,而并不linux杀死进程。

  kill -CONT [pid]

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

  kill -KILL [pid]

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

  kill -9 -1

  终止你拥有的全部进程。


  2. killall

  作用:通过程序的名字,直接杀死所有进程

  用法:killall 正在运行的程序名

  举例:

  [root@localhost beinan]# pgrep -l gaim 2979 gaim

  [root@localhost beinan]# killall gaim

  注意:该命令可以使用 -9 参数来强制杀死进程


  3. pkill

  作用:通过程序的名字,直接杀死所有进程

  用法:#pkill 正在运行的程序名

  举例:

  [root@localhost beinan]# pgrep -l gaim 2979 gaim

  [root@localhost beinan]# pkill gaim


  4. xkill

  作用:杀死桌面图形界面的程序。

  应用情形实例:firefox出现崩溃不能退出时,点鼠标就能杀死firefox 。

  当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。

  如果您想终止xkill ,就按右键取消;

  调用方法:

  [root@localhost ~]# xkill

  ◆注:

  KILLALL

  NAME (名称)

  killall - 以名字方式来linux杀死进程

  SYNOPSIS (总览)

  killall [-egiqvw] [-signal] name ...

  killall -l

  killall -V

  DESCRIPTION (描述)

  killall 发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送SIGTERM.。

  信号可以以名字 (如 -HUP ) 或者数字 (如 -1 ) 的方式指定. 信号 0 (检查进程是否存在)只能以数字方式指定。

  如果命令名包括斜杠 (/), 那么执行该特定文件的进程将被杀掉, 这与进程名无关。

  如果对于所列命令无进程可杀, 那么 killall 会返回非零值. 如果对于每条命令至少杀死了一个进程, killall 返回 0。Killall 进程决不会杀死自己 (但是可以杀死其它 killall 进程)。

  OPTIONS (选项)

  -e对于很长的名字, 要求准确匹配. 如果一个命令名长于 15 个字符, 则可能不能用整个名字 (溢出了). 在这种情况下, killall 会杀死所有匹配名字前 15 个字符的所有进程. 有了 -e 选项,这样的记录将忽略. 如果同时指定了 -v 选项, killall 会针对每个忽略的记录打印一条消息。

  -g杀死属于该进程组的进程. kill 信号给每个组只发送一次, 即使同一进程组中包含多个进程。

  -i交互方式,在linux杀死进程之前征求确认信息。

  -l列出所有已知的信号名。

  -q如果没有进程杀死, 不会提出抱怨。

  -v报告信号是否成功发送。

  -V显示版本信息。

  -w等待所有杀的进程死去. killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回. 注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待。

  FILES(相关文件)

  /proc proc文件系统的存在位置。

  KNOWN bugS (已知 BUGS)

  以文件方式杀死只对那些在执行时一直打开的可执行文件起作用, 也即, 混杂的可执行文件不能够通过这种方式杀死。

  要警告的是输入 killall name 可能不会在非 Linux 系统上产生预期的效果, 特别是特权用户执行时要小心。

  在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程, killall -w 侦测不到。

  • note
    SIGHUP (1) - Hangup detected on controlling terminal or death of controlling process.
    SIGINT (2) - Interrupt from keyboard.
    SIGKILL (9) - Kill signal i.e. kill running process.
    SIGSTOP (19) - Stop process.
    SIGCONT (18) - Continue process if stopped.
#define SIGHUP		 1
#define SIGINT		 2
#define SIGQUIT		 3
#define SIGILL		 4
#define SIGTRAP		 5
#define SIGABRT		 6
#define SIGIOT		 6
#define SIGBUS		 7
#define SIGFPE		 8
#define SIGKILL		 9
#define SIGUSR1		10
#define SIGSEGV		11
#define SIGUSR2		12
#define SIGPIPE		13
#define SIGALRM		14
#define SIGTERM		15
#define SIGSTKFLT	16
#define SIGCHLD		17
#define SIGCONT		18
#define SIGSTOP		19
#define SIGTSTP		20
#define SIGTTIN		21
#define SIGTTOU		22
#define SIGURG		23
#define SIGXCPU		24
#define SIGXFSZ		25
#define SIGVTALRM	26
#define SIGPROF		27
#define SIGWINCH	28
#define SIGIO		29
#define SIGPOLL		SIGIO
/*
#define SIGLOST		29
*/
#define SIGPWR		30
#define SIGSYS		31
#define	SIGUNUSED	31

/* These should not be considered constants from userland.  */
#define SIGRTMIN	32
#define SIGRTMAX	_NSIG

#define SIGSWI		32



参考资料:

http://www.soft6.com/tech/16/166983.html