.\" 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 "March 2013" "util-linux" "User Commands"
.SH NAME
kill \- terminate a process
.SH SYNOPSIS
.B kill
.RB [ \-s
.IR signal | \fB\-p\fP ]
.RB [ \-q
.IR sigval ]
.RB [ \-a ]
.RB [ \-\- ]
.IR pid ...
.br
.B kill -l
.RI [ signal ]
.SH DESCRIPTION
The command
.B kill
sends the specified signal to the specified process or process group. If no
signal is specified, the TERM signal is sent. The TERM signal will kill
processes which do not catch this signal. For other processes, it may be
necessary to use the KILL (9) signal, since this signal cannot be caught.
.PP
Most modern shells have a builtin kill function, with a usage rather similar to
that of the command described here. The '-a' and '-p' options, and the
possibility to specify processes by command name are a local extension.
.PP
If sig is 0, then no signal is sent, but error checking is still performed.
.SH OPTIONS
.TP
.IR pid ...
Specify the list of processes that
.B kill
should signal. Each
.I pid
can be one of five things:
.RS
.TP
.I n
where
.I n
is larger than 0. The process with pid
.I n
will be signaled.
.TP
.B 0
All processes in the current process group are signaled.
.TP
.B -1
All processes with pid larger than 1 will be 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 the signal must be specified first, or the
argument must be preceded by a '--' option, otherwise it will be taken as the
signal to send.
.TP
.I commandname
All processes invoked using that name will be signaled.
.RE
.TP
\fB\-s\fR, \fB\-\-signal\fR \fIsignal\fR
Specify the signal to send. The signal may be given as a signal name or
number.
.TP
\fB\-l\fR, \fB\-\-list\fR [\fIsignal\fR]
Print a list of signal names, or convert signal given as argument to a name.
The signals are found in
.I /usr/\:include/\:linux/\:signal.h
.TP
\fB\-L\fR, \fB\-\-table\fR
Similar to \-l, but will print signal names and their corresponding
numbers.
.TP
\fB\-a\fR, \fB\-\-all\fR
Do not restrict the commandname-to-pid conversion to processes with the same
uid as the present process.
.TP
\fB\-p\fR, \fB\-\-pid\fR
Specify that
.B kill
should only print the process id (pid) of the named processes, and not send any
signals.
.IP
The \-\-pid option functionality is also enabled when the command
copied or linked to name
.BR pid .
This functionality is deprecated, and will not be removed in March 2016.
.TP
\fB\-q\fR, \fB\-\-queue\fR \fIsigval\fR
Use
.BR sigqueue (2)
rather than
.BR kill (2)
and the
.I sigval
argument is used to specify an integer to be sent with the signal. If the
receiving process has installed a handler for this signal using the SA_SIGINFO
flag to
.BR sigaction (2),
then it can obtain this data via the si_value field of the siginfo_t structure.
.SH NOTES
It is not possible to send a signal to explicitly selected thread in a
multithreaded process by
.BR kill (2)
syscall. If
.BR kill(2)
is used to send a signal to a thread group, then kernel selects arbitrary
member of the thread group that has not blocked the signal. For more details
see
.BR clone (2)
CLONE_THREAD description.
.PP
The command
.BR kill (1)
as well as syscall
.BR kill (2)
accepts TID (thread ID, see
.BR gettid (2))
as argument. In this case the kill behavior is not changed and the signal is
also delivered to the thread group rather than to the specified thread.
.SH "SEE ALSO"
.BR bash (1),
.BR tcsh (1),
.BR kill (2),
.BR sigvec (2),
.BR signal (7)
.SH AUTHOR
Taken from BSD 4.4. The ability to translate process names to process ids was
added by
.MT svalente@mit.edu
Salvatore Valente
.ME .
.SH AVAILABILITY
The kill command is part of the util-linux package and is available from
.UR ftp://\:ftp.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .