`

我使用过的Linux命令之kill - 终止进程/发送信号

阅读更多

我使用过的Linux命令之kill - 终止进程/发送信号

本文链接:http://codingstandards.iteye.com/blog/847299   (转载请注明出处)

用途说明

kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令的另外一个用途就是向指定的进程或进程组发送信号(The  command kill sends the specified signal to the specified process or process group),或者确定进程号为PID的进程是否还在。比如,有许多程序都把SIGHUP信号作为重新读取配置文件的触发条件。

在Bash中,kill命令是个Shell内建命令,为什么呢?原因有两个:第一个原因,Bash可以进行任务管理(&,Ctrl+Z,bg,fg,kill %jobid等指令),如果kill只是一个外部命令,那么在需要终止某个任务时就会很难办,因为任务是与终端关联的,反过来,如果kill命令是shell内建命令,就可以很方便的采用kill %jobid的形式去杀掉指定任务(似乎这个原因还不是很充分);第二个原因,是更加重要的,如果要杀掉某个进程还得来启动一个名为kill的子进程,那么在达到允许创建的进程数量上限时,连kill进程本身都无法创建了,还怎么来杀掉其他进程呢!(Kill is a shell builtin for two reasons: it allows job IDs to be used instead of process IDs, and, if you have reached the limit on processes that you can create, you don't have to start a process to kill another one.)

 

常用参数

格式:kill <pid>

格式:kill -TERM <pid>

发送SIGTERM信号到指定进程,如果进程没有捕获该信号,则进程终止(If no signal is specified, the TERM signal is sent.  The TERM signal will kill processes which do not catch this signal.)

 

格式:kill -l

列出所有信号名称(Print a list of signal names.  These are found in /usr/include/linux/signal.h)。只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。下面是常用的信号:

HUP     1    终端断线
INT       2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM    15    终止
KILL      9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP    19    暂停(同 Ctrl + Z)

 

格式:kill -l <signame>

显示指定信号的数值。

 

格式:kill -9 <pid>

格式:kill -KILL <pid>

强制杀掉指定进程,无条件终止指定进程。

 

格式:kill %<jobid>

格式:kill -9 %<jobid>

杀掉指定的任务(使用jobs命令可以列出)

 

使用示例

示例一 kill命令是什么类型的命令

[root@new55 ~]# type -a kill
kill is a shell builtin
kill is /bin/kill
kill is /usr/bin/kill

[root@new55 ~]# help kill
kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
    Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If
    SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'
    lists the signal names; if arguments follow `-l' they are assumed to
    be signal numbers for which names should be listed.  Kill is a shell
    builtin for two reasons: it allows job IDs to be used instead of
    process IDs, and, if you have reached the limit on processes that
    you can create, you don't have to start a process to kill another one.

[root@new55 ~]#

 

示例二 列出所有信号名称

[root@new55 ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
[root@new55 ~]#

/usr/include/linux/signal.h 写道
#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

 

示例三 得到指定信号的数值

[root@new55 ~]# kill -l KILL
9
[root@new55 ~]# kill -l SIGKILL
9
[root@new55 ~]# kill -l TERM
15
[root@new55 ~]# kill -l SIGTERM
15
[root@new55 ~]#

 

示例四 init进程是不可杀的!

init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。

[root@new55 ~]# kill -HUP 1
[root@new55 ~]# kill -9 1
[root@new55 ~]# kill -KILL 1

系统依然在运行。
[root@new55 ~]#

 

示例五 先用ps查找进程,然后用kill杀掉

[root@new55 ~]# ps -ef|grep vim
root      3368  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim
[root@new55 ~]# kill 3368
[root@new55 ~]# kill 3368
-bash: kill: (3368) - 没有那个进程
[root@new55 ~]#

 

示例六 杀掉指定任务

[root@new55 ~]# tail -f install.log
瀹夎 scim-bridge-gtk-0.4.5-9.el5.i386
瀹夎 scim-pinyin-0.5.91-16.el5.i386
瀹夎 scim-chewing-0.3.1-11.el5.i386
瀹夎 scim-chinese-standard-0.0.2-1.el5.i386
瀹夎 scim-tables-0.5.6-7.i386
瀹夎 scim-qtimm-0.9.4-5.i386
瀹夎 scim-tables-chinese-0.5.6-7.i386
瀹夎 fonts-chinese-3.02-12.el5.noarch
瀹夎 isdn4k-utils-3.2-56.el5.i386
瀹夎 stardict-2.4.5-5.i386
Ctrl+Z
[1]+  Stopped                 tail -f install.log
[root@new55 ~]# kill %1
[root@new55 ~]# kill %1
-bash: kill: (3379) - 没有那个进程
[1]+  已终止                  tail -f install.log
[root@new55 ~]#

 

问题思考

相关资料

【1】看看Linux    终止进程kill使用     
【2】我的空间我作主   linux kill信号列表    
【3】LinuxSense    linux kill命令的使用    
【4】太平洋电脑网   Linux的kill命令与信号控制    
【5】forfuture1978    linux Kill多个进程

 

返回 我使用过的Linux命令系列总目录

 

2
1
分享到:
评论

相关推荐

    Linux操作系统实验--进程.doc

    在 Linux 中,可以使用 kill 命令来终止进程,例如:kill 12345。也可以使用 kill 命令来挂起进程,例如:kill -STOP 12345。 五、了解 Linux 的信号机制 Linux 中的信号是进程之间通讯的一种机制。信号可以由进程...

    Linux系统中关于Kill命令的进程调度

    在实际使用中,首先需要通过`ps`命令找出要终止的进程的PID(进程ID),然后使用`kill`命令加上进程ID来发送信号。例如,如果发现进程345占用CPU资源过多,可以执行`kill 345`来结束它。 除了`kill`,还有一些其他...

    终止进程或进程组

    在Linux系统中,kill命令用于终止进程或进程组。该命令可以发送指定的信号到指定的进程或进程组。 kill命令的基本用法 kill命令的基本语法为:`kill [ -s signal | -p ] [ -a ] [ -- ] pid ...` 其中,`pid`指定...

    linux 查找进程及终止进程操作的相关命令.docx

    Linux 查找进程及终止进程操作的相关命令 Linux 操作系统中,查找和终止进程是非常重要的操作。为了帮助用户更好地管理进程,本文将详细介绍 Linux 中查找和终止进程的相关命令。 查找进程的命令:ps ps 命令是 ...

    01--Linux系统编程-信号.docx

    5. shell命令,如kill命令直接发送信号给目标进程。 信号的发送状态包括: - 递送:信号产生并立即尝试传递给目标进程。 - 阻塞:信号在递送过程中可能因为进程设置了信号屏蔽而暂时无法送达。 - 未决:信号已经...

    linux查看进程和终止进程

    通过本文的学习,您应该掌握了如何使用`ps`命令来查看Linux系统中的进程信息以及如何使用`kill`命令来终止进程。这两种命令是Linux系统管理中非常实用的工具,对于日常运维工作具有重要意义。正确地使用它们可以帮助...

    Linux之kill命令.docx

    `kill -9`常与`ps`命令结合使用,先通过`ps`找到进程ID(PID),然后执行`kill -9 PID`来终止进程。这个操作类似于直接断电关机,快速但可能导致数据丢失或系统不稳定。 2. `kill -1`:这是一个信号重载或者叫...

    linux进程kill实验.docx

    使用 kill 命令可以结束进程的执行,并且可以使用不同的信号来控制进程的终止方式。同时,我们也可以使用 ps 命令来查看进程树结构和当前运行的进程信息。了解这些知识点可以帮助我们更好地管理和控制 Linux 进程。

    Linux系统状态检测及进程控制

    - **进程控制**: 包括启动、暂停、继续和终止进程等操作。常见的命令有 `ps`, `top`, `kill` 和 `nice` 等。 - **前台和后台进程**: 进程可以在前台或后台运行。前台进程会占用当前终端窗口,而后台进程则不会。...

    linux命令集合-手册

    - `kill`/`pkill`:发送信号给进程,终止或暂停进程。 - `nohup`:在用户退出后继续运行命令。 6. **网络和文件传输**: - `ping`:检查网络连通性。 - `curl`/`wget`:从网络下载文件。 - `scp`/`rsync`:...

    kill命令使用

    ### Linux中的kill命令详解 #### 一、概述 在Linux操作系统中,`kill`命令是一项极为重要的工具,用于管理和控制正在运行的进程。通过发送不同的信号给目标进程,`kill`命令可以实现对进程的终止、暂停、继续执行...

    linux常用命令大全 - Linux - RHEL - Linux Commands

    - **kill**:终止进程。 - `kill &lt;pid&gt;`:发送信号给进程ID为`&lt;pid&gt;`的进程。 - **ifconfig**:配置网络接口。 - `ifconfig eth0 up`:激活eth0网卡。 - **netstat**:显示网络连接信息。 - `netstat -tuln`:...

    Linux系统中关于Kill命令的进程调度问题

    例如,当你发现一个进程(如`find`命令)运行时间过长,你可以首先用`ps`命令找到它的进程ID(PID),然后使用`kill PID`来终止它。在示例中,进程ID是345,所以命令是`kill 345`。 如果一个进程挂死或者无法响应`...

    Linux 命令全集 - - Linux 命令全集

    Linux是世界上最广泛使用的开源操作系统之一,其核心在于命令行界面,通过各种命令来管理系统、文件和进程。本文将深入探讨Linux命令全集中的关键知识点,帮助用户更好地理解和使用Linux。 1. **基础命令** - `ls`...

    linux,AIX,HP-UNIX彻底删除crs

    **步骤三:终止 CRS 进程并重启节点** 确保所有 CRS 相关进程都被杀死,并重启机器以确保系统状态的一致性。 - `ps -ef | grep css/crs/evm` - `kill -9 &lt;processid&gt;` - 重启节点 **步骤四:清理临时文件** 删除...

    linuxkill命令参数及用法详解借鉴.pdf

    kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。 应用实例一: * 强行中止(经常使用杀掉)一个进程标识号为 324 ...

    简单的linux命令

    - **杀死进程**: 使用 `kill` 命令可以终止特定进程,例如 `kill pid` 可以终止指定进程ID的进程。 - **后台运行进程**: 使用 `&` 符号可以让进程在后台运行,例如 `command &`。 #### 6. 端口命令 - **查看端口**:...

    linux kill命令参数及用法详解.docx

    Linux kill 命令参数及用法详解 Linux kill 命令是 Linux ...Linux kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。

    linux linux进程管理 常用命令

    例如,使用 `kill -9 1234` 命令可以强制终止进程 1234。 killall 命令用于终止多个进程,提供了批量终止进程的功能。killall 命令的基本格式为:`killall [选项] 名称`,其中选项可以是: * -i:交互式地询问用户...

Global site tag (gtag.js) - Google Analytics