---
name: "pkill"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/pkill"
---

# pkill(1)

find or signal processes by name

## NAME

**pgrep**, **pkill** – find or signal processes by name

## SYNOPSIS

**pgrep** \[**-flnoqvx**\] \[**-d** *delim*\] \[**-G** *gid*\] \[**-g** *pgrp*\] \[**-P** *ppid*\] \[**-s** *sid*\] \[**-T** *rtable*\] \[**-t** *tty*\] \[**-U** *uid*\] \[**-u** *euid*\] \[*pattern* *...*\]

**pkill** \[**-***signal*\] \[**-fIlnoqvx**\] \[**-G** *gid*\] \[**-g** *pgrp*\] \[**-P** *ppid*\] \[**-s** *sid*\] \[**-T** *rtable*\] \[**-t** *tty*\] \[**-U** *uid*\] \[**-u** *euid*\] \[*pattern* *...*\]

## DESCRIPTION

The **pgrep** command searches the process table on the running system and prints the process IDs of all processes that match the criteria given on the command line.

The **pkill** command searches the process table on the running system and signals all processes that match the criteria given on the command line.

The following options are available:

- **-d** *delim*

  Specify a delimiter to be printed between each process ID. The default is a newline. This option can only be used with the **pgrep** command.

- **-f**

  Match against full argument lists. The default is to match against process names.

- **-G** *gid*

  Restrict matches to processes with a real group ID in the comma-separated list *gid*.

- **-g** *pgrp*

  Restrict matches to processes with a process group ID in the comma-separated list *pgrp*. The value zero is taken to mean the process group ID of the running **pgrep** or **pkill** command.

- **-I**

  Ask for confirmation before killing a process.

- **-l**

  Long output. Print the process name in addition to the process ID for each matching process. If used in conjunction with **-f**, print the process ID and the full argument list for each matching process (**pgrep** only).

- **-n**

  Match only the most recently created (newest) process, if any. Cannot be used in conjunction with **-o**.

- **-o**

  Match only the least recently created (oldest) process, if any. Cannot be used in conjunction with **-n**.

- **-P** *ppid*

  Restrict matches to processes with a parent process ID in the comma-separated list *ppid*.

- **-q**

  Quiet mode. Perform the action, but don't display anything on standard output. Note that **-q** takes precedence over other display options such as **-l**.

- **-s** *sid*

  Restrict matches to processes with a session ID in the comma-separated list *sid*. The value zero is taken to mean the session ID of the running **pgrep** or **pkill** command.

- **-T** *rtable*

  Restrict matches to processes associated with the specified routing tables in the comma-separated list *rtable*.

- **-t** *tty*

  Restrict matches to processes associated with a terminal in the comma-separated list *tty*. Terminal names may be of the form ‘ttyxx’ or the shortened form ‘xx’. A single dash (‘-’) matches processes not associated with a terminal.

- **-U** *uid*

  Restrict matches to processes with a real user ID in the comma-separated list *uid*.

- **-u** *euid*

  Restrict matches to processes with an effective user ID in the comma-separated list *euid*.

- **-v**

  Reverse the sense of the matching; display or signal processes that do not match the given criteria.

- **-x**

  Require an exact match of the process name, or argument list if **-f** is given. The default is to match any substring.

- **-***signal*

  A non-negative decimal number or one of the symbolic names listed in [signal(3)](/signal/3.md) specifying the signal to be sent instead of the default TERM. This option is valid only when given as the first argument to **pkill**.

If any *pattern* operands are specified, they are used as extended regular expressions to match the command name. Only the first 16 characters of the command name are matched; attempts to match any characters after the first 16 will silently fail. If **-f** is specified, the full argument list, including the full command name, of each process is matched.

Note that a running **pgrep** or **pkill** process will never consider itself or system processes (kernel threads) as a potential match.

## EXIT STATUS

The **pgrep** and **pkill** utilities exit with one of the following values:

- 0

  One or more processes were matched.

- 1

  No processes were matched.

- 2

  Invalid options were specified on the command line.

- 3

  An internal error occurred.

## SEE ALSO

[grep(1)](/grep/1.md), [kill(1)](/kill/1.md), [ps(1)](/ps/1.md), [kill(2)](/kill/2.md), [signal(3)](/signal/3.md), [re\_format(7)](/re_format/7.md)

## HISTORY

**pkill** and **pgrep** first appeared in OpenBSD 3.5. They are modelled after utilities of the same name that appeared in Sun Solaris 7.

## AUTHORS

Andrew Doran ⟨*ad@NetBSD.org*⟩.
