.\" Manual page for pgrep / pkill.
.\" Licensed under version 2 of the GNU General Public License.
.\" Copyright 2000 Kjetil Torgrim Homme
.\"
.TH PGREP 1 "June 25, 2000" "Linux" "Linux User's Manual"
.SH NAME
pgrep, pkill \- look up or signal processes based on name and other attributes

.SH SYNOPSIS
pgrep [\-flvx] [\-d \fIdelimiter\fP] [\-n|\-o] [\-P \fIppid\fP,...] [\-g \fIpgrp\fP,...]
.br
	[\-s \fIsid\fP,...] [\-u \fIeuid\fP,...] [\-U \fIuid\fP,...] [\-G \fIgid\fP,...]
.br
	[\-t \fIterm\fP,...] [\fIpattern\fP]

pkill [\-\fIsignal\fP] [\-fvx] [\-n|\-o] [\-P \fIppid\fP,...] [\-g \fIpgrp\fP,...]
.br
	[\-s \fIsid\fP,...] [\-u \fIeuid\fP,...] [\-U \fIuid\fP,...] [\-G \fIgid\fP,...]
.br
	[\-t \fIterm\fP,...] [\fIpattern\fP]

.SH DESCRIPTION
\fBpgrep\fP looks through the currently running processes and lists the
process IDs which matches the selection criteria to stdout.  All
the criteria have to match.  For example,

pgrep -u root sshd

will only list the processes called \fBsshd\fP AND owned by \fBroot\fP.
On the other hand,

pgrep -u root,daemon

will list the processes owned by \fBroot\fP OR \fBdaemon\fP.

\fBpkill\fP will send the specified signal (by default \fBSIGTERM\fP)
to each process instead of listing them on stdout.

.SH OPTIONS
.TP
\-d \fIdelimiter\fP
Sets the string used to delimit each process ID in the output (by
default a newline).  (\fBpgrep\fP only.)
.TP
\-f
The \fIpattern\fP is normally only matched against the process name.
When \-f is set, the full command line is used.
.TP
\-g \fIpgrp\fP,...
Only match processes in the process group IDs listed.  Process group 0
is translated into \fBpgrep\fP's or \fBpkill\fP's own process group.
.TP
\-G \fIgid\fP,...
Only match processes whose real group ID is listed.  Either the
numerical or symbolical value may be used.
.TP
\-l
List the process name as well as the process ID. (\fBpgrep\fP only.)
.TP
\-n
Select only the newest (most recently started) of the matching
processes.
.TP
\-o
Select only the oldest (least recently started) of the matching
processes.
.TP
\-P \fIppid\fP,...
Only match processes whose parent process ID is listed.
.TP
\-s \fIsid\fP,...
Only match processes whose process session ID is listed.  Session ID 0
is translated into \fBpgrep\fP's or \fBpkill\fP's own session ID.
.TP
\-t \fIterm\fP,...
Only match processes whose controlling terminal is listed.  The
terminal name should be specified without the "/dev/" prefix.
.TP
\-u \fIeuid\fP,...
Only match processes whose effective user ID is listed.  Either the
numerical or symbolical value may be used.
.TP
\-U \fIuid\fP,...
Only match processes whose real user ID is listed.  Either the
numerical or symbolical value may be used.
.TP
\-v
Negates the matching.
.TP
\-x
Only match processes whose name (or command line if \-f is specified)
\fBexactly\fP match the \fIpattern\fP.
.TP
\-\fIsignal\fP
Defines the signal to send to each matched process.  Either the
numeric or the symbolic signal name can be used.  (\fBpkill\fP only.)

.SH OPERANDS
.TP
\fIpattern\fP
Specifies an Extended Regular Expression for matching against the
process names or command lines.

.SH EXAMPLES
Example 1: Find the process ID of the \fBnamed\fP daemon:

unix$ pgrep \-u root named

Example 2: Make \fBsyslog\fP reread its configuration file:

unix$ pkill \-HUP syslogd

Example 3: Give detailed information on all \fBxterm\fP processes:

unix$ ps \-fp $(pgrep \-d, \-x xterm)

Example 4: Make all \fBnetscape\fP processes run nicer:

unix$ renice +4 `pgrep netscape`

.SH "EXIT STATUS"
.TP
.I "0"
One or more processes matched the criteria.
.TP
.I "1"
No processes matched.
.TP
.I "2"
Syntax error in the command line.
.TP
.I "3"
Fatal error: out of memory etc.

.SH NOTES
The process name used for matching is limited to the 15 characters
present in the output of /proc/\fIpid\fP/stat.  Use the \-f option to
match against the complete command line, /proc/\fIpid\fP/cmdline.

The running \fBpgrep\fP or \fBpkill\fP process will never report
itself as a match.

.SH BUGS
The options \-n and \-o and \-v can not be combined.  Let me know if
you need to do this.

Defunct processes are reported.

.SH "SEE ALSO"
ps(1) regex(7) signal(7) killall(1) skill(1) kill(1) kill(2)

.SH STANDARDS
\fBpkill\fP and \fBpgrep\fP were introduced in Sun's Solaris 7.  This
implementation is fully compatible.

.SH AUTHOR
Kjetil Torgrim Homme <kjetilho@ifi.uio.no>

Albert Cahalan <albert@users.sf.net> is the current maintainer of
the procps package.

Please send bug reports to <procps-feedback@lists.sf.net>
