241 lines
6.0 KiB
Groff
241 lines
6.0 KiB
Groff
.\" 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 "November 2019" "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 ]
|
|
\fR[\fB\-\-timeout \fImilliseconds signal\fR]
|
|
.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
|
|
.B 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 expressed in one of the following ways:
|
|
.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
|
|
.IR /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
|
|
.B kill
|
|
along with the signal.
|
|
.TP
|
|
\fB\-q\fR, \fB\-\-queue\fR \fIvalue\fR
|
|
Send the signal using
|
|
.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.
|
|
.TP
|
|
\fB\-\-timeout\fR \fImilliseconds signal\fR
|
|
Send a signal defined in the usual way to a process,
|
|
followed by an additional signal after a specified delay.
|
|
The
|
|
.B \-\-timeout
|
|
option causes
|
|
.B kill
|
|
to wait for a period defined in
|
|
.I milliseconds
|
|
before sending a follow-up
|
|
.I signal
|
|
to the process.
|
|
This feature is implemented using the Linux kernel
|
|
PID file descriptor feature in order to guarantee that the follow-up signal
|
|
is sent to the same process or not sent if the process no longer exists.
|
|
.IP
|
|
Note that the operating system may re-use PIDs and implementing an
|
|
equivalent feature in a shell using
|
|
.B kill
|
|
and
|
|
.B sleep
|
|
would be subject to races whereby the follow-up signal might be sent
|
|
to a different process that used a recycled PID.
|
|
.IP
|
|
The
|
|
.B \-\-timeout
|
|
option can be specified multiple times: the signals are sent
|
|
sequentially with the specified timeouts. The
|
|
.B \-\-timeout
|
|
option can be combined with the
|
|
.B \-\-queue
|
|
option.
|
|
.IP
|
|
As an example, the following command sends
|
|
the signals QUIT, TERM and KILL in sequence and waits for 1000
|
|
milliseconds between sending the signals:
|
|
.IP
|
|
.in +4n
|
|
.EX
|
|
kill \-\-verbose \-\-timeout 1000 TERM \-\-timeout 1000 KILL \e
|
|
\-\-signal QUIT 12345
|
|
.EE
|
|
.in
|
|
.SH EXIT STATUS
|
|
.B kill
|
|
has the following exit status values:
|
|
.PP
|
|
.RS
|
|
.PD 0
|
|
.TP
|
|
.B 0
|
|
success
|
|
.TP
|
|
.B 1
|
|
failure
|
|
.TP
|
|
.B 64
|
|
partial success (when more than one process specified)
|
|
.PD
|
|
.RE
|
|
.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).
|
|
.P
|
|
Various shells provide a builtin
|
|
.B kill
|
|
command that is
|
|
preferred in relation to the
|
|
.BR kill (1)
|
|
executable described by this manual.
|
|
The easiest way to ensure one is executing the command described in this page
|
|
is to use the full path when calling the command, for example:
|
|
.B "/bin/kill \-\-version"
|
|
.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 SEE ALSO
|
|
.BR bash (1),
|
|
.BR tcsh (1),
|
|
.BR sigaction (2),
|
|
.BR kill (2),
|
|
.BR sigqueue (3),
|
|
.BR signal (7)
|
|
|
|
.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 .
|