fbpx
维基百科

kill (命令)

電腦運算中,kill是一个在多种流行操作系统上都可见到的命令,可向运行中的行程发送信号,以请求进程终止。

实现 编辑

Unix和类Unix 编辑

Unix类Unix操作系统中,kill是用于向进程发送信号命令。默认发送的消息是终止信号,会要求该进程退出。但kill(杀)可能会引起误解,发送的信号可能与进程杀死无关。kill命令是一个包装了kill()系统调用包裝函式,该系统调用按进程ID(PID)或进程组ID(PGID)数,向系统上的进程或进程组发送信号POSIX标准规定kill应作为独立工具提供。然而,大部分shell都内置了kill的命令,用法可能与标准略有不同[1][2]

可以发送多种不同的信号(参见信号中的完整列表),而一般用户是最感兴趣的是SIGTERMSIGKILL。默认发送的信号是SIGTERM。处理这个信号的程序在退出前可以做一些有用的清理操作(如保存配置信息到文件中)。然而,许多程序并没有专门处理此信号的处理程序,因此会调用默认的信号处理函数。而其他情况下,有特殊处理程序的程序也会出错,从而无法正确处理信号。

SIGKILL和SIGSTOP之外的所有信号可以为进程所“截获”,这意味着程序在接收到这些信号时,可以调用特殊函数。两个例外SIGKILL和SIGSTOP只能由主机系统内核处理,由其负责提供可靠的控制进程执行的方法。SIGKILL会杀死进程,而SIGSTOP可暂停它,直至SIGCONT[3]

UNIX提供了安全机制,以防止未授权用户杀死其他进程。实质上,若进程欲向另一个进程发送信号,发信进程的所有者必须与收信进程的所有者相同,或是超级用户

可用信号有着不同的名称,且映射到特定的数字。注意在不同的Unix实现中,数字和信号之间的映射关系可以不同。SIGTERM往往为15,而SIGKILL通常编为9。

示例 编辑

可通过以下四种方式发送SIGTERM信号(示例进程ID为“1234”):

kill 1234 kill -s TERM 1234 kill -TERM 1234 kill -15 1234 

可通过三种方式发送SIGKILL信号:

kill -s KILL 1234 kill -KILL 1234 kill -9 1234 

其它有用的信号包括HUP、TRAP、INT、SEGV及ALRM。HUP发送SIGHUP信号。一些守护程序,包括ApacheSendmail的,在接收到SIGHUP时重新读取配置文件,因此可用kill命令执行这个功能。在大多数Unix外壳中,只需按下CTRL+C便可以产生SIGINT信号。CTRL+Z也常映射至SIGTSTP,CTRL+\(反斜杠)映射至SIGQUIT,这可强制程序进行核心转储

相关程序 编辑

  • killall - 一些Unix变种如Solaris,在关机时会自动调用该实用程序。它的功能类似上面的kill命令,但不是向单个进程发送信号,而是发送到系统中的所有进程。然而在其它的操作系统中,如IRIXLinuxFreeBSD,允许通过参数指定要杀死的进程名称。例如,为了杀死一个进程,如XMMS音乐播放器调用的一个xmms实例,用户可以运行命令killall xmms。这将杀死所有名为xmms的进程,在Solaris系统上等同于kill `pidof xmms`
  • pkill - 根据名称和其他属性向进程发送信号。它最早出现在Solaris 7中,之后又重新为Linux、NetBSDOpenBSD实现。pkill使得基于名称杀死进程更加方便:如,要杀死名为firefox的进程,若不使用pkill(及pgrep),必须键入kill `ps --no-headers -C firefox -o pid`,而有pkill,只需pkill firefox
  • xkill - 如果不带任何参数调用,鼠标光标将从箭头变为“x”图标,用户可以单击一个窗口,强制X服务器关闭与该窗口客户端的连接。这往往会导致进程在检测到它与X服务器的连接已关闭后终止。

Microsoft Windows 编辑

在微软的命令行解释器Windows PowerShell中,预定义的kill是一个Stop-Process cmdlet的命令别名

Microsoft Windows XPVista7中附带了taskkill命令[4]以终止进程。常见用法为taskkill /im "IMAGENAME"。在Microsoft Windows提供给Windows 98资源工具包中有一个“不受支持”的kill版本[5]

GNU版的kill已通过Cygwin移植,并可以运行在Microsoft Windows Services for UNIX的Unix子环境中(微软于1999年9月17日通过购买Softway Systems及其Interix产品获得了Windows Services for UNIX)。[6]

示例 编辑

寻找并杀死所有以字母“P”开头、由微软开发、使用内存超过10 MB的进程:

PS C:\>ps p* | where { $_.Company -like "Microsoft*" -and $_.WorkingSet -gt 10MB } | kill -confirm Confirm Are you sure you want to perform this action? Performing operation "Stop-Process" on Target "powershell (6832)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): A PS C:\> 

下面是一个简单的例子,它要求explorer.exe进程终止:

PS C:\>taskkill /im explorer.exe 

强制终止进程:

PS C:\>taskkill /f /im explorer.exe 

还可按PID号杀死进程,如下所示:

PS C:\>taskkill /pid 3475 

Microsoft Singularity 编辑

微軟研究院微內核操作系统Singularity的标准外壳Singularity shell包含用以终止后台进程的kill命令。

示例 编辑

停止名为“SampleProcess”的进程:

Singularity>kill SampleProcess 

停止进程标识符为“42”的进程:

Singularity>kill 42 

贝尔实验室九号计划 编辑

貝爾實驗室九號計畫,kill程序不实际执行终止操作,也不需要给予进程ID。相反,它需要进程的实际名称,并输出为rc(九号计划所使用的殼層)的命令来杀死进程。[7]

有一个类似命令slay执行类似操作,但是用于拒绝被这样杀死的进程。[7]

示例 编辑

杀死所有troff的实例:

kill troff | rc 

参见 编辑

参考 编辑

  1. ^ Bash Reference Manual: Job Control Builtins. The GNU Project. [2015-02-24]. (原始内容于2019-09-18). 
  2. ^ zsh: 17. Shell Builtin Commands. [2015-02-24]. (原始内容于2019-09-18). 
  3. ^ <signal.h>. The Open Group Base Specifications Issue 7. [2015-02-24]. (原始内容于2020-12-19). 
  4. ^ Taskkill. Microsoft TechNet. [2015-02-24]. (原始内容于2018-02-03). 
  5. ^ Resource Kit Utilities - Windows '98 Resource Kit. ActiveXperts Software. [2015-02-24]. (原始内容于2019-05-25). 
  6. ^ . [2015-02-24]. (原始内容存档于2006-02-09). 
  7. ^ 7.0 7.1 . Plan 9 wiki. [2015-02-24]. (原始内容存档于2008-09-05). 

外部链接 编辑

kill, 命令, 在電腦運算中, kill是一个在多种流行操作系统上都可见到的命令, 可向运行中的行程发送信号, 以请求进程终止, 目录, 实现, unix和类unix, 示例, 相关程序, microsoft, windows, 示例, microsoft, singularity, 示例, 贝尔实验室九号计划, 示例, 参见, 参考, 外部链接实现, 编辑unix和类unix, 编辑, 在unix和类unix操作系统中, kill是用于向进程发送信号的命令, 默认发送的消息是终止信号, 会要求该进程退出, 但. 在電腦運算中 kill是一个在多种流行操作系统上都可见到的命令 可向运行中的行程发送信号 以请求进程终止 目录 1 实现 1 1 Unix和类Unix 1 1 1 示例 1 1 2 相关程序 1 2 Microsoft Windows 1 2 1 示例 1 3 Microsoft Singularity 1 3 1 示例 1 4 贝尔实验室九号计划 1 4 1 示例 2 参见 3 参考 4 外部链接实现 编辑Unix和类Unix 编辑 在Unix和类Unix操作系统中 kill是用于向进程发送信号的命令 默认发送的消息是终止信号 会要求该进程退出 但kill 杀 可能会引起误解 发送的信号可能与进程杀死无关 kill命令是一个包装了kill 系统调用的包裝函式 该系统调用按进程ID PID 或进程组ID PGID 数 向系统上的进程或进程组发送信号 POSIX标准规定kill应作为独立工具提供 然而 大部分shell都内置了kill的命令 用法可能与标准略有不同 1 2 可以发送多种不同的信号 参见信号中的完整列表 而一般用户是最感兴趣的是SIGTERM和SIGKILL 默认发送的信号是SIGTERM 处理这个信号的程序在退出前可以做一些有用的清理操作 如保存配置信息到文件中 然而 许多程序并没有专门处理此信号的处理程序 因此会调用默认的信号处理函数 而其他情况下 有特殊处理程序的程序也会出错 从而无法正确处理信号 除SIGKILL和SIGSTOP之外的所有信号可以为进程所 截获 这意味着程序在接收到这些信号时 可以调用特殊函数 两个例外SIGKILL和SIGSTOP只能由主机系统内核处理 由其负责提供可靠的控制进程执行的方法 SIGKILL会杀死进程 而SIGSTOP可暂停它 直至SIGCONT 3 UNIX提供了安全机制 以防止未授权用户杀死其他进程 实质上 若进程欲向另一个进程发送信号 发信进程的所有者必须与收信进程的所有者相同 或是超级用户 可用信号有着不同的名称 且映射到特定的数字 注意在不同的Unix实现中 数字和信号之间的映射关系可以不同 SIGTERM往往为15 而SIGKILL通常编为9 示例 编辑 可通过以下四种方式发送SIGTERM信号 示例进程ID为 1234 kill 1234 kill s TERM 1234 kill TERM 1234 kill 15 1234 可通过三种方式发送SIGKILL信号 kill s KILL 1234 kill KILL 1234 kill 9 1234 其它有用的信号包括HUP TRAP INT SEGV及ALRM HUP发送SIGHUP信号 一些守护程序 包括Apache和Sendmail的 在接收到SIGHUP时重新读取配置文件 因此可用kill命令执行这个功能 在大多数Unix外壳中 只需按下CTRL C便可以产生SIGINT信号 CTRL Z也常映射至SIGTSTP CTRL 反斜杠 映射至SIGQUIT 这可强制程序进行核心转储 相关程序 编辑 killall 一些Unix变种如Solaris 在关机时会自动调用该实用程序 它的功能类似上面的kill命令 但不是向单个进程发送信号 而是发送到系统中的所有进程 然而在其它的操作系统中 如IRIX Linux及FreeBSD 允许通过参数指定要杀死的进程名称 例如 为了杀死一个进程 如XMMS音乐播放器调用的一个xmms实例 用户可以运行命令killall xmms 这将杀死所有名为xmms的进程 在Solaris系统上等同于kill pidof xmms pkill 根据名称和其他属性向进程发送信号 它最早出现在Solaris 7中 之后又重新为Linux NetBSD及OpenBSD实现 pkill使得基于名称杀死进程更加方便 如 要杀死名为firefox的进程 若不使用pkill 及pgrep 必须键入kill ps no headers C firefox o pid 而有pkill 只需pkill firefox xkill 如果不带任何参数调用 鼠标光标将从箭头变为 x 图标 用户可以单击一个窗口 强制X服务器关闭与该窗口客户端的连接 这往往会导致进程在检测到它与X服务器的连接已关闭后终止 Microsoft Windows 编辑 在微软的命令行解释器Windows PowerShell中 预定义的kill是一个Stop Process cmdlet的命令别名 Microsoft Windows XP Vista和7中附带了taskkill命令 4 以终止进程 常见用法为taskkill im IMAGENAME 在Microsoft Windows提供给Windows 98资源工具包中有一个 不受支持 的kill版本 5 GNU版的kill已通过Cygwin移植 并可以运行在Microsoft Windows Services for UNIX的Unix子环境中 微软于1999年9月17日通过购买Softway Systems及其Interix产品获得了Windows Services for UNIX 6 示例 编辑 寻找并杀死所有以字母 P 开头 由微软开发 使用内存超过10 MB的进程 PS C gt ps p where Company like Microsoft and WorkingSet gt 10MB kill confirm Confirm Are you sure you want to perform this action Performing operation Stop Process on Target powershell 6832 Y Yes A Yes to All N No L No to All S Suspend Help default is Y A PS C gt 下面是一个简单的例子 它要求explorer exe进程终止 PS C gt taskkill im explorer exe 强制终止进程 PS C gt taskkill f im explorer exe 还可按PID号杀死进程 如下所示 PS C gt taskkill pid 3475 Microsoft Singularity 编辑 微軟研究院的微內核操作系统Singularity的标准外壳Singularity shell包含用以终止后台进程的kill命令 示例 编辑 停止名为 SampleProcess 的进程 Singularity gt kill SampleProcess 停止进程标识符为 42 的进程 Singularity gt kill 42 贝尔实验室九号计划 编辑 在貝爾實驗室九號計畫 kill程序不实际执行终止操作 也不需要给予进程ID 相反 它需要进程的实际名称 并输出为rc 九号计划所使用的殼層 的命令来杀死进程 7 有一个类似命令slay执行类似操作 但是用于拒绝被这样杀死的进程 7 示例 编辑 杀死所有troff的实例 kill troff rc参见 编辑信号 Xkill Killall Pkill signal h参考 编辑 Bash Reference Manual Job Control Builtins The GNU Project 2015 02 24 原始内容存档于2019 09 18 zsh 17 Shell Builtin Commands 2015 02 24 原始内容存档于2019 09 18 lt signal h gt The Open Group Base Specifications Issue 7 2015 02 24 原始内容存档于2020 12 19 Taskkill Microsoft TechNet 2015 02 24 原始内容存档于2018 02 03 Resource Kit Utilities Windows 98 Resource Kit ActiveXperts Software 2015 02 24 原始内容存档于2019 05 25 GNU utilities for Win32 2015 02 24 原始内容存档于2006 02 09 7 0 7 1 UNIX to Plan 9 command translation Plan 9 wiki 2015 02 24 原始内容存档于2008 09 05 外部链接 编辑命令 kill 命令与工具 Commands amp Utilities 参考 单一UNIX 规范第7期 由國際開放標準組織发布 系统调用 kill 系统界面 System Interfaces 参考 单一UNIX 规范第7期 由國際開放標準組織发布 取自 https zh wikipedia org w index php title Kill 命令 amp oldid 64162542, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。