'\" te .\" Copyright (c) 2007, 2011, Oracle and/or its affiliates.All rights reserved. .\" Copyright 1989 AT&T .\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.In the following statement, the phrase "this text" refers to portions of the system documentation.Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document.The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.This notice shall appear on any product containing this material. .TH kill 1 "2011 年 7 月 12 日" "SunOS 5.11" "用户命令" .SH 名称 kill \- 终止进程或向进程发送信号 .SH 用法概要 .LP .nf \fB/usr/bin/kill\fR \fB-s\fR \fIsignal_name\fR \fIpid\fR... .fi .LP .nf \fB/usr/bin/kill\fR \fB-l\fR [\fIexit_status\fR] .fi .LP .nf \fB/usr/bin/kill\fR [\fB-\fIsignal_name\fR\fR] \fIpid\fR... .fi .LP .nf \fB/usr/bin/kill\fR [\fB-\fIsignal_number\fR\fR] \fIpid\fR... .fi .SH 描述 .sp .LP \fBkill\fR 实用程序会向每个 \fIpid\fR 操作数指定的一个或多个进程发送信号。 .sp .LP 针对每个 \fIpid\fR 操作数,\fBkill\fR 实用程序执行与使用以下参数调用 \fBkill\fR(2) 函数等效的操作: .RS +4 .TP 1. \fIpid\fR 操作数的值用作 \fIpid\fR 参数。 .RE .RS +4 .TP 2. \fIsig\fR 参数是由 \fB-s\fR 选项、\fB-\fR\fIsignal_name\fR 选项或 \fB-\fR\fIsignal_number\fR 选项指定的值,如果这些选项都未指定,则是由 \fBSIGTERM\fR 指定的值。 .RE .sp .LP 接收信号的进程必须属于当前用户,除非用户为超级用户。 .sp .LP 有关 shell 内置版本的 \fBkill\fR 的说明,请参见“附注”。 .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 18n .rt (字母 ell。)如果未指定操作数,则会写入实现支持的 \fIsignal_name\fR 的所有值。如果指定了 \fIexit_status\fR 操作数,并且它是 \fB?\fR shell 特殊参数的值且 \fBwait\fR 与信号终止的进程对应,则会写入与终止了进程的信号对应的 \fIsignal_name\fR。如果指定了 \fIexit_status\fR 操作数,并且它是某个信号编号的无符号十进制整数值,则将写入与该信号对应的 \fIsignal_name\fR。否则,结果不确定。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIsignal_name\fR\fR .ad .RS 18n .rt 使用 \fB\fR 说明中定义的符号名称之一指定要发送的信号。\fIsignal_name\fR 的值不区分大小写,且不带 \fBSIG\fR 前缀。此外,符号名称 \fB0\fR 也可以识别,它代表信号值零。发送对应的信号而非 \fBSIGTERM\fR。 .RE .sp .ne 2 .mk .na \fB\fB-\fR\fIsignal_name\fR\fR .ad .RS 18n .rt 等效于 \fB-s\fR \fIsignal_name\fR。 .RE .sp .ne 2 .mk .na \fB\fB-\fR\fIsignal_number\fR\fR .ad .RS 18n .rt 指定一个非负数十进制整数 \fIsignal_number\fR(代表用来代替 \fBSIGTERM\fR 的信号)作为对 \fBkill\fR(2) 的有效调用中的 \fIsig\fR 参数。 .RE .SH 操作数 .sp .LP 支持下列操作数: .sp .ne 2 .mk .na \fB\fIpid\fR\fR .ad .RS 15n .rt 以下各项之一: .RS +4 .TP 1. 一个十进制整数,指定要向其发送信号的进程或进程组。由 \fIpid\fR 操作数的正值、负值和零值选择的进程与针对 kill 函数所描述的相同。如果指定了进程编号 0,则会向进程组中的所有进程发送信号。如果第一个 \fIpid\fR 操作数为负数,则应当在它前面加上 \fB--\fR,以免将其解释为选项。 .RE .RS +4 .TP 2. 一个作业控制作业 \fBID\fR,标识要向其发送信号的后台进程组。作业控制作业 \fBID\fR 表示法只适用于在当前 shell 执行环境中调用的 \fBkill\fR。 .RE \fIpid\fR 这一作业控制作业 \fBID\fR 类型仅在支持作业控制选项的系统上可用。 .RE .sp .ne 2 .mk .na \fB\fIexit_status\fR\fR .ad .RS 15n .rt 一个十进制整数,指定信号编号或被信号终止的进程的退出状态。 .RE .SH 用法 .sp .LP 可使用 \fBps\fR(1) 来查找进程编号。 .sp .LP \fBkill\fR 在自己的实用程序执行环境中运行时,不要求作业控制作业 \fBID\fR 表示法按预期工作。在下述任一示例中: .sp .in +2 .nf example% \fBnohup kill %1 &\fR example% \fBsystem( "kill %1");\fR .fi .in -2 .sp .sp .LP \fBkill\fR 在一个不同的环境中运行,并且与 shell 对作业编号有着不同的理解。 .SH 输出 .sp .LP 未指定 \fB-l\fR 选项时,将不使用标准输出。 .sp .LP 指定了 \fB-l\fR 选项时,将按以下格式写入每个信号的符号名称: .sp .in +2 .nf "%s%c", <\fIsignal_name\fR>, <\fIseparator\fR> .fi .in -2 .sp .LP 其中 \fB<\fR\fIsignal_name\fR\fB>\fR 是大写的且不带 \fBSIG\fR 前缀,而 \fB<\fR\fIseparator\fR\fB>\fR 则是一个换行符或空格字符。对于最后写入的信号,\fB<\fR\fIseparator\fR\fB>\fR 是一个换行符。 .sp .LP 同时指定了 \fB-l\fR 选项和 \fIexit_status\fR 操作数时,将按以下格式写入相应信号的符号名称: .sp .in +2 .nf "%s\en", <\fIsignal_name\fR> .fi .in -2 .SH 示例 .LP \fB示例 1 \fRSending the kill signal .sp .LP 以下任意命令: .sp .in +2 .nf example% \fBkill -9 100 -165\fR example% \fBkill -s kill 100 -165\fR example% \fBkill -s KILL 100 -165\fR .fi .in -2 .sp .sp .LP 会向进程 \fBID\fR 为 \fB100\fR 的进程以及进程组 \fBID\fR 为 \fB165\fR 的所有进程发送 \fBSIGKILL\fR 信号,并且假定发送方进程有权向指定的进程发送该信号且指定的进程存在。 .LP \fB示例 2 \fR避免开头的负数的歧义 .sp .LP 为避免初始参数为负数所带来的歧义(即不确定指定的是信号编号还是进程组),系统始终认为指定的是前者。因此,要向某个进程组(例如 \fB123\fR)发送缺省信号,应用程序应使用类似于以下命令之一的命令: .sp .in +2 .nf example% \fBkill -TERM -123\fR example% \fBkill -- -123\fR .fi .in -2 .sp .SH 环境变量 .sp .LP 有关影响 \fBkill\fR 执行的以下环境变量的说明,请参见 \fBenviron\fR(5):\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR 和 \fBNLSPATH\fR。 .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 为每个 \fIpid\fR 操作数找到了至少一个匹配的进程,并且至少为一个匹配的进程成功处理了指定的信号。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .SS "/usr/bin/kill、csh、ksh88、sh" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ CSIEnabled(已启用) _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SS "ksh" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ CSIEnabled(已启用) _ 接口稳定性Uncommitted(未确定) .TE .SH 另请参见 .sp .LP \fBcsh\fR(1)、\fBgetconf\fR(1)、\fBjobs\fR(1)、\fBksh\fR(1)、\fBksh88\fR(1)、\fBps\fR(1)、\fBsh\fR(1)、\fBshell_builtins\fR(1)、\fBwait\fR(1)、\fBkill\fR(2)、\fBsignal\fR(3C)、\fBsignal.h\fR(3HEAD)、\fBattributes\fR(5)、\fBenviron\fR(5)、\fBstandards\fR(5) .SH 附注 .SS "/usr/bin/kill" .sp .LP 支持的实时信号的数量是由 \fBgetconf\fR(1) 值 \fB_POSIX_RTSIG_MAX\fR 定义的。 .SS "sh" .sp .LP Bourne shell \fBsh\fR 有一个内置版本的 \fBkill\fR,可以针对由 \fIjobid\fR 标识的进程提供与 \fBkill\fR 命令相同的功能。\fBsh\fR 语法为: .sp .in +2 .nf kill [ -sig ] [ pid ] [ %job ]... kill -l .fi .in -2 .sp .SS "csh" .sp .LP C-shell \fBcsh\fR 也有一个内置的 \fBkill\fR 命令,其语法为: .sp .in +2 .nf kill [-sig][pid][%job]... kill -l .fi .in -2 .sp .sp .LP \fBcsh\fR \fBkill\fR 内置命令向指定的进程 \fBID\fR、指定的\fI作业\fR或当前\fI作业\fR发送 \fBTERM\fR(终止)信号(缺省情况下)或指定的信号。信号可通过编号或名称指定。无缺省值。键入 \fBkill\fR 不会向当前作业发送信号。如果发送的信号是 \fBTERM\fR(终止)或 \fBHUP\fR(挂起),则还会向作业或进程发送一个 \fBCONT\fR(继续)信号。 .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 6n .rt 列出可发送的信号名称。 .RE .SS "ksh88" .sp .LP \fBksh88\fR \fBkill\fR 的语法为: .sp .in +2 .nf kill [-sig][pid][%job]... kill -l .fi .in -2 .sp .sp .LP \fBksh88\fR \fBkill\fR 向指定的作业或进程发送 \fBTERM\fR(终止)信号或指定的信号。信号可通过编号或名称指定(如 \fBsignal.h\fR(3HEAD) 中指定的一样,但要去掉 \fBSIG\fR 前缀)。如果发送的信号是 \fBTERM\fR(终止)或 \fBHUP\fR(挂起),如果作业或进程已停止,则会向其发送 \fBCONT\fR(继续)信号。参数 \fIjob\fR 可以是不属于某个活动作业的进程的进程 ID。如果使用第二种形式,即 \fBkill\fR \fB-l\fR,则会列出信号编号和名称。 .SS "ksh" .sp .LP \fBksh\fR \fBkill\fR 的语法为: .sp .in +2 .nf kill [-n signum] [-s signame] job ... kill [-n signum] [-s signame] -l [arg ...] .fi .in -2 .sp .sp .LP 使用未指定 \fB-l\fR 的第一种形式时,\fBkill\fR 会向由\fIjob\fR 指定的一个或多个进程发送信号。这通常会终止进程,除非信号被捕获或忽略。 .sp .LP 将 \fIjob\fR 指定为以下之一: .sp .ne 2 .mk .na \fB\fInumber\fR\fR .ad .RS 12n .rt \fIjob\fR 的进程 ID。 .RE .sp .ne 2 .mk .na \fB\fB-\fR\fInumber\fR\fR .ad .RS 12n .rt \fIjob\fR 的进程组 ID。 .RE .sp .ne 2 .mk .na \fB\fB%\fR\fInumber\fR\fR .ad .RS 12n .rt 作业编号。 .RE .sp .ne 2 .mk .na \fB\fB%\fR\fIstring\fR\fR .ad .RS 12n .rt 名称以 \fIstring\fR 开头的作业。 .RE .sp .ne 2 .mk .na \fB\fB%?\fR\fIstring\fR\fR .ad .RS 12n .rt 名称包含 \fIstring\fR 的作业。 .RE .sp .ne 2 .mk .na \fB\fB%+\fR\fR .ad .br .na \fB\fB%%\fR\fR .ad .RS 12n .rt 当前作业。 .RE .sp .ne 2 .mk .na \fB\fB%-\fR\fR .ad .RS 12n .rt 前一个作业。 .RE .sp .LP 如果未使用 \fB-n\fR 或 \fB-s\fR 选项指定信号,则会使用 \fBSIGTERM\fR 信号。 .sp .LP 如果指定了 \fB-l\fR 但未指定 \fIarg\fR,则 \fBkill\fR 会将信号列表写入到标准输出。否则,\fIarg\fR 可以是一个信号名称,或者是一个数字(表示信号编号或者被信号终止的进程的退出状态)。如果指定了名称,则会将对应的信号编号写入到标准输出。如果指定了编号,则会将对应的信号名称写入到标准输出。 .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 14n .rt 列出信号名称或信号编号,而不是如上所述发送信号。不可指定 \fB-n\fR 和 \fB-s\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR \fIsignum\fR\fR .ad .RS 14n .rt 指定要发送的信号编号。信号编号无法跨平台移植,但以下情况除外: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 没有信号。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .RS 6n .rt \fBHUP\fR .RE .sp .ne 2 .mk .na \fB\fB2\fR\fR .ad .RS 6n .rt \fBINT\fR .RE .sp .ne 2 .mk .na \fB\fB3\fR\fR .ad .RS 6n .rt \fBQUIT\fR .RE .sp .ne 2 .mk .na \fB\fB6\fR\fR .ad .RS 6n .rt \fBABRT\fR .RE .sp .ne 2 .mk .na \fB\fB9\fR\fR .ad .RS 6n .rt \fBKILL\fR .RE .sp .ne 2 .mk .na \fB\fB14\fR\fR .ad .RS 6n .rt \fBALRM\fR .RE .sp .ne 2 .mk .na \fB\fB15\fR\fR .ad .RS 6n .rt \fBTERM\fR .RE .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIsigname\fR\fR .ad .RS 14n .rt 指定要发送的信号名称。信号名称源自它们在 \fB\fR 中的名称,但不带 \fBSIG\fR 前缀,而且不区分大小写。\fBkill\fR \fB-l\fR 将生成当前平台上的信号列表。 .RE .sp .LP \fBksh\fR 中的 \fBkill\fR 退出时将返回下列值之一: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 为每个作业操作数找到了至少一个匹配的进程,并且至少向一个匹配的进程成功发送了指定的信号。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE