# skill
Send a signal to processes selected by user, tty, pid, or command.
## Description
`skill` is the obsolete predecessor of `pkill`; both tools are kept
for compatibility, but new use cases should prefer `pkill`. The CLI
follows procps-ng's quirky convention where the signal is given as a
leading `-NAME` or `-N` argument (e.g. `skill -KILL -u alice`), like
`kill(1)`.
The default signal is `TERM`. Selectors (`-t`, `-u`, `-p`, `-c`) are
OR'd within their category and AND'd across categories.
## Inputs
- `kill(2)` syscall — sends signals to matched processes.
- `/proc/[pid]/stat` — process name (comm), PID, session, tty.
- `/proc/[pid]/status` — effective UID.
- `/proc/[pid]/cmdline` — full command line (when matching by `-c`).
## Synopsis
```
skill [signal] [options] <expression>
```
`expression` is a list of bare PIDs (interpreted in conjunction with
`-p`). Selectors with explicit flags can be mixed with bare PIDs.
## Arguments
| `-<SIG>` (e.g. `-9`, `-KILL`, `-SIGKILL`) | Signal to send. Default: `TERM` |
| `--signal SIG` | Same as the leading-flag form, but in long-flag style |
| `-l, --list` | List all signal names |
| `-L, --table` | List all signal names in a numbered table |
| `-n, --no-action` | Don't send signals; just print matching PIDs |
| `-v, --verbose` | Print the PID and `comm` of each signaled process |
| `-t, --tty TTY` | Match processes whose controlling tty is `TTY` (repeatable) |
| `-u, --user USER` | Match processes whose effective user is `USER` (name or numeric UID, repeatable) |
| `-p, --pid PID` | Match processes by PID (repeatable) |
| `-c, --command CMD` | Match processes whose `comm` is exactly `CMD` (repeatable) |
| `--help` / `-V, --version` | Help / version |
The signal can appear anywhere on the command line. Bare positional
integers are added to the PID list.
## Behavior
### Selection
`-c` values match the process `comm` exactly; multiple `-c` values are
OR'd. `-p` values become an exact PID filter. Selectors across
categories (`-t`, `-u`, `-p`, `-c`) are combined with AND.
### `-l` / `-L`
Identical output to `kill -l` / `kill -L`. Standard signals 1–31 only;
real-time signals are omitted.
### `-n` (no-action)
Prints matching PIDs, one per line, in ascending order. Useful as a
dry-run before signaling.
### `-v` (verbose)
For each successfully signaled process, prints `pid: comm`.
## Exit codes
| 0 | At least one process matched and was signaled (or list/table requested) |
| 1 | No processes matched, or all signal deliveries failed |
| 2 | Usage error (unknown signal, no expression given, invalid argument) |
## Divergences from procps-ng
Behaviour matches procps-ng for the supported flag set; some
procps-ng features are not yet implemented:
- `-i` (interactive), `-f` (fast), `-w` (warnings) mode flags.
- `--ns PID` and `--nslist NS,...` — namespace-based selection.
- Real-time signals (`SIGRTMIN..SIGRTMAX`) cannot be named; they are
still deliverable by number via `--signal N`.
Error messages for invalid arguments use different wording.