Kill (命令)
在電腦運算中, 实现Unix和类Unix在Unix和类Unix操作系统中, 可以发送多种不同的信号(参见信号中的完整列表),而一般用户是最感兴趣的是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,这可强制程序进行核心转储。 相关程序
Microsoft Windows在微软的命令行解释器Windows PowerShell中,预定义的 Microsoft Windows XP、Vista和7中附带了 GNU版的 示例寻找并杀死所有以字母“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包含用以终止后台进程的 示例停止名为“SampleProcess”的进程: Singularity>kill SampleProcess
停止进程标识符为“42”的进程: Singularity>kill 42
贝尔实验室九号计划在貝爾實驗室九號計畫,kill程序不实际执行终止操作,也不需要给予进程ID。相反,它需要进程的实际名称,并输出为rc(九号计划所使用的殼層)的命令来杀死进程。[7] 有一个类似命令 示例杀死所有troff的实例: kill troff | rc 参见参考
外部链接 |
Portal di Ensiklopedia Dunia