.\" Copyright 1994 Salvatore Valente (svalente@mit.edu)
.\" Copyright 1992 Rickard E. Faith (faith@cs.unc.edu)
.\" May be distributed under the GNU General Public License
.TH KILL 1 "July 2014" "util-linux" "User Commands"
.SH NAME
kill \- terminate a process
.SH SYNOPSIS
.B kill
.RB [ \- \fIsignal\fR| \-s
.IR signal | \fB-p\fP ]
.RB [ \-q
.IR value ]
.RB [ \-a ]
.RB [ \-\- ]
.IR pid | name ...
.br
.B kill \-l
.RI [ number ]
.RB "| " \-L
.SH DESCRIPTION
The command
.B kill
sends the specified \fIsignal\fR to the specified processes or process groups.
.PP
If no signal is specified, the TERM signal is sent.
The default action for this signal is to terminate the process.
This signal should be used in preference to the
KILL signal (number 9), since a process may install a handler for the
TERM signal in order to perform clean-up steps before terminating in
an orderly fashion.
If a process does not terminate after a TERM signal has been sent,
then the KILL signal may be used; be aware that the latter signal
cannot be caught, and so does not give the target process the opportunity
to perform any clean-up before terminating.
.PP
Most modern shells have a builtin kill command, with a usage rather similar to
that of the command described here.  The
.BR \-\-all ,
.BR \-\-pid ", and"
.B \-\-queue
options, and the possibility to specify processes by command name, are local extensions.
.PP
If \fIsignal\fR is 0, then no actual signal is sent, but error checking is still performed.

.SH ARGUMENTS
The list of processes to be signaled can be a mixture of names and PIDs.
.TP
.I pid
Each
.I pid
can be one of four things:
.RS
.TP
.I n
where
.I n
is larger than 0.  The process with PID
.I n
is signaled.
.TP
.B 0
All processes in the current process group are signaled.
.TP
.B -1
All processes with a PID larger than 1 are signaled.
.TP
.BI - n
where
.I n
is larger than 1.  All processes in process group
.I n
are signaled.  When an argument of the form '-n' is given, and it is meant to
denote a process group, either a signal must be specified first, or the
argument must be preceded by a '--' option, otherwise it will be taken as the
signal to send.
.RE
.TP
.I name
All processes invoked using this \fIname\fR will be signaled.

.SH OPTIONS
.TP
\fB\-s\fR, \fB\-\-signal\fR \fIsignal\fR
The signal to send.  It may be given as a name or a number.
.TP
\fB\-l\fR, \fB\-\-list\fR [\fInumber\fR]
Print a list of signal names, or convert the given signal number to a name.
The signals can be found in
.I /usr/\:include/\:linux/\:signal.h
.TP
\fB\-L\fR, \fB\-\-table\fR
Similar to \fB\-l\fR, but it will print signal names and their corresponding
numbers.
.TP
\fB\-a\fR, \fB\-\-all\fR
Do not restrict the command-name-to-PID conversion to processes with the same
UID as the present process.
.TP
\fB\-p\fR, \fB\-\-pid\fR
Only print the process ID (PID) of the named processes, do not send any
signals.
.TP
\fB\-\-verbose\fR
Print PID(s) that will be signaled with kill along with the signal.
.TP
\fB\-q\fR, \fB\-\-queue\fR \fIvalue\fR
Use
.BR sigqueue (3)
rather than
.BR kill (2).
The
.I value
argument is an integer that is sent along with the signal.  If the
receiving process has installed a handler for this signal using the
.B SA_SIGINFO
flag to
.BR sigaction (2),
then it can obtain this data via the
.I si_sigval
field of the
.I siginfo_t
structure.

.SH NOTES
Although it is possible to specify the TID (thread ID, see
.BR gettid (2))
of one of the threads in a multithreaded process as the argument of
.BR kill ,
the signal is nevertheless directed to the process
(i.e., the entire thread group).
In other words, it is not possible to send a signal to an
explicitly selected thread in a multithreaded process.
The signal will be delivered to an arbitrarily selected thread
in the target process that is not blocking the signal.
For more details, see
.BR signal (7)
and the description of
.B CLONE_THREAD
in
.BR clone (2).

.SH RETURN CODES
.B kill
has the following return codes:
.TP
.B 0
success
.TP
.B 1
failure
.TP
.B 64
partial success (when more than one process specified)

.SH SEE ALSO
.BR bash (1),
.BR tcsh (1),
.BR sigaction (2),
.BR kill (2),
.BR sigqueue (3),
.BR signal (7)

.SH AUTHORS
.MT svalente@mit.edu
Salvatore Valente
.ME
.br
.MT kzak@redhat.com
Karel Zak
.ME
.br
.PP
The original version was taken from BSD 4.4.

.SH AVAILABILITY
The kill command is part of the util-linux package and is available from
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .
