]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - misc-utils/kill.1
Manual pages: order NOTES / HISTORY / BUGS / EXAMPLE consistently
[thirdparty/util-linux.git] / misc-utils / kill.1
index a3bc9ee050896765823e0bc497513d6dd853d231..6fd50036d9a513fb84c7136f93acbb9838ef6c54 100644 (file)
 .\" 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"
+.TH KILL 1 "November 2019" "util-linux" "User Commands"
 .SH NAME
 kill \- terminate a process
 .SH SYNOPSIS
 .B kill
-.RB [ \-s
-.IR signal  | \fB\-p\fP ]
+.RB [ \- \fIsignal\fR| \-s
+.IR signal | \fB\-p\fP ]
 .RB [ \-q
-.IR sigval ]
+.IR value ]
 .RB [ \-a ]
+\fR[\fB\-\-timeout \fImilliseconds signal\fR]
 .RB [ \-\- ]
-.IR pid ...
+.IR pid | name ...
 .br
-.B kill -l
-.RI [ signal ]
+.B kill \-l
+.RI [ number ]
+.RB "| " \-L
 .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.
+sends the specified \fIsignal\fR to the specified processes or process groups.
 .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.
+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
-If sig is 0, then no signal is sent, but error checking is still performed.
-.SH OPTIONS
+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
-.IR pid ...
-Specify the list of processes that
-.B kill
-should signal.  Each
 .I pid
-can be one of five things:
+Each
+.I pid
+can be one of four things:
 .RS
 .TP
 .I n
 where
 .I n
-is larger than 0.  The process with pid
+is larger than 0.  The process with PID
 .I n
-will be signaled.
+is 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.
+.B \-1
+All processes with a PID larger than 1 are signaled.
 .TP
-.BI - n
+.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
+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.
-.TP
-.I commandname
-All processes invoked using that name will be signaled.
 .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
-Specify the signal to send.  The signal may be given as a signal name or
-number.
+The signal to send.  It may be given as a name or a 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
+\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 \-l, but will print signal names and their corresponding
+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 commandname-to-pid conversion to processes with the same
-uid as the present process.
+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
-Specify that
-.B kill
-should only print the process id (pid) of the named processes, and not send any
+Only print the process ID (PID) of the named processes, do 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
+\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 (2)
+.BR sigqueue (3)
 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
+.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 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 RETURN CODES
+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 the usual way to a process.
+.B \-\-timeout
+will make
 .B kill
-has the following return codes:
+to wait for a period defined in
+.I milliseconds
+before sending follow-up
+.I signal
+to process.
+This feature is implemented by PID file-descriptor and guaranties that
+follow-up signals are sent to the same process or not sent if the process no
+more exist.  Note that the operating system may re-use PIDs and implement the
+same feature in a shell by kill and sleep commands sequence may introduce a
+race.  This option can be specified more than once than signals are sent
+sequentially in defined timeouts.  The
+.B \-\-timeout
+option can be combined with
+.B \-\-queue
+option.
+.IP
+Example.  Send signals QUIT, TERM and KILL in sequence and wait for 1000
+milliseconds between the signals
+.br
+kill \-\-verbose \-\-timeout 1000 TERM \-\-timeout 1000 KILL \-\-signal QUIT 12345
+.SH EXIT STATUS
+.B kill
+has the following exit status values:
+.PP
+.RS
+.PD 0
 .TP
-.BR 0
+.B 0
 success
 .TP
-.BR 1
+.B 1
 failure
 .TP
-.BR 64
+.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 have provide an internal kill implementation that is
+preferred in relation to the
+.BR kill (1)
+executable described by this manual.  Easiest way to ensure one is executing
+the executable is to use 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 sigvec (2),
+.BR sigqueue (3),
 .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/
+.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
 Linux Kernel Archive
 .UE .