# pgrep

## NAME



           pgrep, pkill, pidwait - look up, signal, or wait for processes
           based on name and other attributes
    


## SYNOPSIS



           **pgrep**[_option_ ...] _pattern_
    
           **pkill**[_option_ ...] _pattern_
    
           **pidwait**[_option_ ...] _pattern_
    


## DESCRIPTION



           **pgrep** looks through the currently running processes and lists the
           process IDs which match the selection criteria to stdout.  All the
           criteria have to match.  For example,
    
                  $ pgrep -u root sshd
    
           will only list the processes whose name include **sshd** AND owned by
           **root**.  On the other hand,
    
                  $ pgrep -u root,daemon
    
           will list the processes owned by **root** OR **daemon**.
    
           **pkill** will send the specified signal (by default **SIGTERM**) to each
           process instead of listing them on stdout.
    
           **pidwait** will wait for each process instead of listing them on
           stdout.
    


## OPTIONS



           **-**_signal_
           **--signal** _signal_
                  Defines the signal to send to each matched process.  Either
                  the numeric or the symbolic signal name can be used. In
                  **pgrep** or **pidwait** mode only the long option can be used and
                  has no effect unless used in conjunction with
                  **--require-handler** to filter to processes with a userspace
                  signal handler present for a particular signal.
    
           **-a** , **--list-full**
                  List the full command line as well as the process ID.
                  (**pgrep** only.)
    
           **-A** , **--ignore-ancestors**
                  Ignore all ancestors of **pgrep** , **pkill** , or **pidwait**.  For
                  example, this can be useful when elevating with **sudo** or
                  similar tools.
    
           **-c** , **--count**
                  Suppress normal output; instead print a count of matching
                  processes.  When count does not match anything, e.g.
                  returns zero, the command will return non-zero value. Note
                  that for pkill and pidwait, the count is the number of
                  matching processes, not the processes that were
                  successfully signaled or waited for.
    
           **-d** , **--delimiter** _delimiter_
                  Sets the string used to delimit each process ID in the
                  output (by default a newline).  (**pgrep** only.)
    
           **-e** , **--echo**
                  Display name and PID of the process being killed.  (**pkill**
                  only.)
    
           **-f** , **--full**
                  The _pattern_ is normally only matched against the process
                  name.  When **-f** is set, the full command line is used.
    
           **-F** , **--pidfile** _file_
                  Read _PID_ s from _file_.  This option is more useful for **pkill**
                  or **pidwait** than **pgrep**.  The filename "-" can be used to
                  read from _STDIN_.  Conflicts with the **--pid** option.
    
           **-g** , **--pgroup** _pgrp_ ,...
                  Only match processes in the process group IDs listed.
                  Process group 0 is translated into **pgrep** 's, **pkill** 's, or
                  **pidwait** 's own process group.
    
           **-G** , **--group** _gid_ ,...
                  Only match processes whose real group ID is listed.  Either
                  the numerical or symbolical value may be used.
    
           **-H** , **--require-handler**
                  Only match processes with a userspace signal handler
                  present for the signal to be sent.
    
           **-i** , **--ignore-case**
                  Match processes case-insensitively.
    
           **-l** , **--list-name**
                  List the process name as well as the process ID.  (**pgrep**
                  only.)
    
           **-L** , **--logpidfile**
                  Fail if pidfile (see **-F**) not locked.
    
           **-m** , **--mrelease**
                  After sending the signal, invoke the **process_mrelease**()
                  system call to immediately free the target process's
                  memory.
    
           **-n** , **--newest**
                  Select only the newest (most recently started) of the
                  matching processes.
    
           **-o** , **--oldest**
                  Select only the oldest (least recently started) of the
                  matching processes.
    
           **-O** , **--older** _secs_
                  Select processes older than secs.
    
           **-p** , **--pid** _pid_ ,...
                  Only match processes whose process ID is listed. Conflicts
                  with the **--pidfile** option.
    
           **-P** , **--parent** _ppid_ ,...
                  Only match processes whose parent process ID is listed.
    
           **-q** , **--queue** _value_
                  Send the integer _value_ along with the signal. This option
                  will either use pidfd_send_signal(2) with a value applied
                  or sigqueue(3) rather than kill(2).  If the receiving
                  process has installed a handler for this signal using the
                  SA_SIGINFO flag to sigaction(2), then it can obtain this
                  data via the si_value field of the siginfo_t structure.
    
           **-Q** , **--shell-quote**
                  Output the command line in shell-quoted form.  (**pgrep**
                  only.)
    
           **-r** , **--runstates** _D,R,S,Z,_...
                  Match only processes which match the process state.
    
           **-s** , **--session** _sid_ ,...
                  Only match processes whose process session ID is listed.
                  Session ID 0 is translated into **pgrep** 's, **pkill** 's, or
                  **pidwait** 's own session ID.
    
           **-t** , **--terminal** _term_ ,...
                  Only match processes whose controlling terminal is listed.
                  The terminal name should be specified without the "/dev/"
                  prefix.
    
           **-u** , **--euid** _euid_ ,...
                  Only match processes whose effective user ID is listed.
                  Either the numerical or symbolical value may be used.
    
           **-U** , **--uid** _uid_ ,...
                  Only match processes whose real user ID is listed.  Either
                  the numerical or symbolical value may be used.
    
           **-v** , **--inverse**
                  Negates the matching.  This option is usually used in
                  **pgrep** 's or **pidwait** 's context.  In **pkill** 's context the short
                  option is disabled to avoid accidental usage of the option.
    
           **-w** , **--lightweight**
                  Shows all thread ids instead of pids in **pgrep** 's or
                  **pidwait** 's context.  In **pkill** 's context this option is
                  disabled.
    
           **-x** , **--exact**
                  Only match processes whose names (or command lines if **-f** is
                  specified) **exactly** match the _pattern_.
    
           **--cgroup** _name_**,...**
                  Match on provided control group (cgroup) v2 name. See
                  cgroups(7)
    
           **--env** _name_[_=value_],...
                  Match on process that have these environment variables. If
                  the _=value_ parameter is not defined then only the variable
                  name is matched.
    
           **--ns** _pid_
                  Match processes that belong to the same namespaces.
                  Required to run as root to match processes from other
                  users. See **--nslist** for how to limit which namespaces to
                  match.
    
           **--nslist** _name_**,...**
                  Match only the provided namespaces. Available namespaces:
                  ipc, mnt, net, pid, user, uts.
    
           **-V** , **--version**
                  Display version information and exit.
    
           **-h** , **--help**
                  Display help and exit.
    


## OPERANDS



           _pattern_
                  Specifies an Extended Regular Expression for matching
                  against the process names or command lines.
    


## EXAMPLES



           Example 1: Find the process ID of the **named** daemon:
    
                  $ pgrep -u root named
    
           Example 2: Make **syslog** reread its configuration file:
    
                  $ pkill -HUP syslogd
    
           Example 3: Give detailed information on all **bash** processes:
    
                  $ ps -fp $(pgrep -d, -x bash)
    
           Example 4: Make all **chrome** processes run nicer:
    
                  $ renice +4 $(pgrep chrome)
    
           Example 5: Wait for a process with a known PID to finish:
    
                  $ echo ${PID} | pidwait -F -
    


## EXIT STATUS



           **0** One or more processes matched the criteria. For **pkill** and
                  **pidwait** , one or more processes must also have been
                  successfully signalled or waited for.
    
           **1** No processes matched or none of them could be signalled.
    
           **2** Syntax error in the command line.
    
           **3** Fatal error: out of memory etc.
    


## NOTES



           The process name used for matching is limited to the 15 characters
           present in the output of /proc/_pid_ /stat.  Use the **-f** option to
           match against the complete command line, /proc/_pid_ /cmdline.
           Threads may not have the same process name as the parent process
           but will have the same command line.
    
           The running **pgrep** , **pkill** , or **pidwait** process will never report
           itself as a match.
    
           The **-O --older** option will silently fail if _/proc_ is mounted with
           the _subset=pid_ option.
    
           **pkill** will attempt to use pidfd_send_signal(2) instead of kill(2)
           or sigqueue(3) to send a signal to the target process if it is
           able to get the process file descriptor.
    


## BUGS



           The options **-n** and **-o** and **-v** can not be combined.  Let me know if
           you need to do this.
    
           If processes start in the same clock tick (usually but not always
           a 100th of a second), the options **-n** and **-o** will not be able to
           distinguish which process started in the same clock tick and may
           give erroneous results.
    
           Defunct processes are reported.
    
           **pidwait** requires the pidfd_open(2) system call which first
           appeared in Linux 5.3.
    


* * *