Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Kill (command)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Implementations== ===Unix and Unix-like=== In [[Unix]] and [[Unix-like]] operating systems, <code>kill</code> is a [[command (computing)|command]] used to send a [[Signal (IPC)|signal]] to a process. By default, the message sent is the [[SIGTERM|termination signal]], which requests that the process [[exit (system call)|exit]]. But ''kill'' is something of a misnomer; the signal sent may have nothing to do with process killing. The <code>kill</code> command is a [[wrapper function|wrapper]] around the '''<code>kill()</code>''' [[system call]], which sends [[Signal (IPC)|signals]] to processes or [[process group]]s on the system, referenced by their numeric [[process identifier|process IDs]] (PIDs) or [[process group]] IDs (PGIDs). <code>kill</code> is always provided as a standalone utility as defined by the [[POSIX]] standard. However, most [[Unix shell|shells]] have [[Shell builtin|built-in]] <code>kill</code> commands that may slightly differ from it.<ref>{{cite web | title = Bash Reference Manual: Job Control Builtins | url = https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html | website = The GNU Project | access-date = 2015-02-24 }}</ref><ref>{{cite web | title = zsh: 17. Shell Builtin Commands | url = http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html | access-date = 2015-02-24 }}</ref> There are many different signals that can be sent (see ''[[signal (IPC)|signal]]'' for a full list), although the signals in which users are generally most interested are [[SIGTERM]] ("terminate") and [[SIGKILL]] ("kill"). The default signal sent is SIGTERM. Programs that handle this signal can do useful cleanup operations (such as saving configuration information to a file) before quitting. However, many programs do not implement a special handler for this signal, and so a default signal handler is called instead. Other times, even a process that has a special handler has gone awry in a way that prevents it from properly handling the signal. All signals except for SIGKILL and [[SIGSTOP]] ("stop") can be "intercepted" by the process, meaning that a special function can be called when the program receives those signals. The two exceptions SIGKILL and SIGSTOP are only seen by the host system's [[Kernel (operating system)|kernel]], providing reliable ways of controlling the execution of processes. SIGKILL kills the process, and SIGSTOP pauses it until a [[SIGCONT]] ("continue") is received.<ref>{{cite web | url = http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html | title = <signal.h> | website = The Open Group Base Specifications Issue 7 | access-date = 2015-02-24 }}</ref> Unix provides security mechanisms to prevent unauthorized users from killing other processes. Essentially, for a process to send a signal to another, the owner of the signaling process must be the same as the owner of the receiving process or be the [[superuser]]. The available signals all have different names, and are mapped to certain numbers. The specific mapping between numbers and signals can vary between Unix implementations. SIGTERM is often numbered 15 while SIGKILL is often numbered 9. ====Examples==== A process can be sent a [[SIGTERM]] signal in four ways (the process ID is '1234' in this case): <syntaxhighlight lang="bash"> kill 1234 kill -s TERM 1234 kill -TERM 1234 kill -15 1234 </syntaxhighlight> The process can be sent a [[SIGKILL]] signal in three ways: <syntaxhighlight lang="bash"> kill -s KILL 1234 kill -KILL 1234 kill -9 1234 </syntaxhighlight> Other useful signals include HUP, TRAP, INT, [[SIGSEGV|SEGV]] and ALRM. HUP sends the [[SIGHUP]] signal. Some daemons, including [[Apache HTTP Server|Apache]] and [[Sendmail]], re-read [[configuration file]]s upon receiving SIGHUP, so the kill command may be used for this too. A [[SIGINT (POSIX)|SIGINT]] signal can be generated very simply by pressing [[Control-C|{{keypress|CTRL|C}}]] in most [[Unix shell]]s. It is also common for [[Control-Z|{{keypress|CTRL|Z}}]] to be mapped to [[SIGTSTP]] ("terminal stop"), and for [[Control-\|{{keypress|CTRL|\}}]] (backslash) to be mapped to [[SIGQUIT]], which can force a program to do a [[core dump]]. ====Related programs==== *[[killall]] - on some variations of Unix, such as [[Solaris (operating system)|Solaris]], this utility is automatically invoked when the system is going through a [[Shutdown (computing)|shutdown]]. It behaves much like the kill command above, but instead of sending a signal to an individual process, the signal is sent to all processes on the system. However, on others such as [[IRIX]], [[Linux]], and [[FreeBSD]], an argument is supplied specifying the name of the process (or processes) to kill. For instance, to kill a process such as an instance of the [[XMMS]] music player invoked by <code>xmms</code>, the user would run the command <code>killall xmms</code>. This would kill all processes named <code>xmms</code>, and is equivalent to <code>kill `pidof xmms`</code> on systems like Solaris. *[[pkill]] - signals processes based on name and other attributes. It was introduced in Solaris 7 and has since been reimplemented for Linux, [[NetBSD]] and [[OpenBSD]]. pkill makes killing processes based on their name much more convenient: e.g. to kill a process named ''firefox'' without pkill (and without [[pgrep]]), one would have to type <code>kill `ps --no-headers -C firefox -o pid`</code> whereas with pkill, one can simply type <code>pkill firefox</code>. *[[xkill]] - if called without any parameters, the mouse cursor changes from an arrow to an "x" icon, and the user can click on a window to force the X server to close the connection with the client owning the window. This often causes the process to terminate when it detects that its connection to the X server has been closed. ===Microware OS-9=== The <code>kill</code> command is also available as a [[shell builtin]] in the [[OS-9]] shell. It is used to kill another process by process ID.<ref>{{cite book|author=Paul S. Dayan|year=1992|title=The OS-9 Guru - 1 : The Facts|publisher=Galactic Industrial Limited|isbn=0-9519228-0-7}}</ref> Stop the process with the process ID "7": <syntaxhighlight lang="text"> $ kill 7 </syntaxhighlight> ===Microsoft Windows and ReactOS=== [[File:Taskkill.jpg|thumb|300px|The {{code|taskkill}} command on [[Microsoft Windows]]]] In Microsoft's command-line interpreter [[Windows PowerShell]], <code>kill</code> is a predefined [[alias (command)|command alias]] for the <code>Stop-Process</code> [[cmdlet]]. [[Windows XP|Microsoft Windows XP]], [[Windows Vista|Vista]] and [[Windows 7|7]] include the command <code>taskkill</code><ref>{{cite web | title = Taskkill | url = https://technet.microsoft.com/en-us/library/bb491009.aspx | website = Microsoft TechNet | access-date = 2015-02-24 }}</ref> to terminate processes. The usual syntax for this command is <code>taskkill /im "IMAGENAME"</code>. An "unsupported" version of <code>kill</code> was included in several releases of the [[Microsoft Windows]] [[Resource Kit]]s available for Windows 98.<ref>{{cite web | title = Resource Kit Utilities - Windows '98 Resource Kit | url = http://www.activexperts.com/admin/reskit/reskit98/ | website = ActiveXperts Software | access-date = 2015-02-24 | archive-date = 2019-05-25 | archive-url = https://web.archive.org/web/20190525230705/https://www.activexperts.com/admin/reskit/reskit98/ | url-status = dead }}</ref> [[GNU]] versions of <code>kill</code> have been ported via [[Cygwin]] and run inside of the Unix environment subsystem that [[Microsoft Windows Services for UNIX]] provides (Microsoft acquired Windows Services for Unix wholesale via their purchase of Softway Systems and their [[Interix]] product on September 17, 1999).<ref>{{cite web | title = GNU utilities for Win32 | url = http://unxutils.sourceforge.net/ | access-date = 2015-02-24 | archive-url = https://web.archive.org/web/20060209022842/http://unxutils.sourceforge.net/ | archive-date = 2006-02-09 | url-status = dead }}</ref> [[File:ReactOS-0.4.13 taskkill command 667x434.png|thumb|300px|The {{code|taskkill}} command on [[ReactOS]]]] The [[ReactOS]] implementation is based on the Windows variant. It was developed by Andrew Riedi, Andrew Nguyen, and He Yang. It is licensed under the [[LGPLv2.1]] or later.<ref name="reactos">[https://github.com/reactos/reactos/blob/master/base/applications/cmdutils/taskkill/taskkill.c reactos/taskkill.c at master Β· reactos/reactos Β· GitHub]</ref> ====Examples==== Find all processes beginning with the letter "p" that were developed by Microsoft and use more than 10 MB of memory and kill them: <syntaxhighlight lang="ps1con"> 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:\> </syntaxhighlight> Here is a simpler example, which asks the process [[Windows Explorer|Explorer.exe]] to terminate: <syntaxhighlight lang="ps1con">PS C:\> taskkill /im explorer.exe</syntaxhighlight> This example forces the process to terminate: <syntaxhighlight lang="ps1con">PS C:\> taskkill /f /im explorer.exe</syntaxhighlight> Processes can also be killed by their [[Process identifier|PID number]]: <syntaxhighlight lang="ps1con">PS C:\> taskkill /pid 3476</syntaxhighlight> ===Microsoft Singularity=== [[Singularity (operating system)|Singularity shell]], the standard shell for [[Microsoft Research]]'s [[microkernel]] operating system [[Singularity (operating system)|Singularity]] includes a <code>kill</code> command to terminate background processes. ====Examples==== Stop the process with the name "SampleProcess": <syntaxhighlight lang="text"> Singularity>kill SampleProcess </syntaxhighlight> Stop the process with the process identifier "42": <syntaxhighlight lang="text"> Singularity>kill 42 </syntaxhighlight> ===Plan 9 from Bell Labs=== Under [[Plan 9 from Bell Labs]], the kill program does not actually perform this termination, nor does it take process IDs. Rather, it takes the actual names of processes and outputs the commands for [[Rc (Unix shell)|rc]], the [[shell (computing)|shell]] used by Plan 9, to kill the process.<ref name="plan9wiki">{{cite web |title = UNIX to Plan 9 command translation |url = http://www.plan9.bell-labs.com/wiki/plan9/unix_to_plan_9_command_translation/ |website = Plan 9 wiki |access-date = 2015-02-24 |url-status = dead |archive-url = https://web.archive.org/web/20080905170211/http://plan9.bell-labs.com/wiki/plan9/UNIX_to_Plan_9_command_translation/ |archive-date = 2008-09-05 }}</ref> A similar command provided is called <code>slay</code>, which does the same but for processes that refuse to be killed this way.<ref name="plan9wiki" /> ====Examples==== For example, to kill all instances of [[troff]], one types: kill troff | rc ===Others=== The {{Mono|kill}} command has also been ported to the [[IBM i]] operating system.<ref>{{cite web |title=IBM System i Version 7.2 Programming Qshell |language=en |author=IBM |website=[[IBM]] |author-link=IBM |url=https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzahz/rzahzpdf.pdf?view=kc |access-date=2020-09-05 }}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)