Skip to content

Signals

Synopsis

kill [-s SIGNAL | -SIGNAL] PID…
kill -l [NUMBER | EXIT_STATUS]
pkill [-SIGNAL] [OPTIONS] PATTERN
killall [-s SIGNAL] NAME…
systemctl kill [--signal=SIGNAL] [--kill-whom=main|control|all] UNIT…

Description

A signal is an asynchronous notification sent to a process or thread, identified by a number and a name such as SIGTERM. Each signal has a default action that applies unless the process has changed its disposition: ignore the signal, or catch it with a handler. SIGKILL and SIGSTOP can't be caught, blocked or ignored.

Signal numbers are architecture-specific. This page lists the values on x86-64 (and ARM and most other architectures); Alpha, SPARC, MIPS and PA-RISC number several signals differently. Commands and scripts that name signals (kill -TERM, kill -s HUP) rather than numbering them work on every architecture.

The signal list was checked with Bash's kill -l and kill -L from procps-ng (Debian 13, Ubuntu 26.04, Gentoo) and util-linux (AlmaLinux 10, Rocky Linux 10, Arch Linux) on x86-64, and the default actions against signal(7) from man-pages 6.9.1 on Debian 13 (November 2026). The background is explained in Processes and signals.

Default actions

Action Effect
Term Terminate the process
Core Terminate the process and write a core dump, if core dumps are enabled (ulimit -c, kernel.core_pattern)
Ign Ignore the signal
Stop Stop (suspend) the process
Cont Continue the process if it is stopped

Standard signals

Number Name Default action Typical source and use
1 SIGHUP Term Terminal hang-up, or end of the controlling process. Many daemons reload their configuration or reopen log files on SIGHUP
2 SIGINT Term Ctrl+C on a terminal
3 SIGQUIT Core Ctrl+\ on a terminal; quit with a core dump
4 SIGILL Core Illegal CPU instruction
5 SIGTRAP Core Breakpoint or trace trap, used by debuggers
6 SIGABRT Core abort(3), typically after a failed assertion; SIGIOT is a synonym
7 SIGBUS Core Bus error: invalid memory access, such as touching a mapped file beyond its end
8 SIGFPE Core Arithmetic error, such as integer division by zero
9 SIGKILL Term Unconditional termination; can't be caught, blocked or ignored
10 SIGUSR1 Term No predefined meaning; defined by each program
11 SIGSEGV Core Invalid memory reference (segmentation fault)
12 SIGUSR2 Term No predefined meaning; defined by each program
13 SIGPIPE Term Write to a pipe or socket with no reader
14 SIGALRM Term Timer set with alarm(2) or setitimer(2) expired
15 SIGTERM Term Request to terminate; the default signal of kill, pkill and killall, and the first signal service managers send to stop a service
16 SIGSTKFLT Term Coprocessor stack fault; unused on x86-64
17 SIGCHLD Ign A child process stopped, continued or terminated; SIGCLD is a synonym
18 SIGCONT Cont Continue a stopped process; sent by fg and bg
19 SIGSTOP Stop Unconditional stop; can't be caught, blocked or ignored
20 SIGTSTP Stop Ctrl+Z on a terminal
21 SIGTTIN Stop A background process read from its terminal
22 SIGTTOU Stop A background process wrote to its terminal while stty tostop is set, or changed the terminal's settings
23 SIGURG Ign Urgent (out-of-band) data on a socket
24 SIGXCPU Core CPU time limit (ulimit -t, RLIMIT_CPU) exceeded
25 SIGXFSZ Core File size limit (ulimit -f, RLIMIT_FSIZE) exceeded
26 SIGVTALRM Term Virtual timer (setitimer(2), ITIMER_VIRTUAL) expired
27 SIGPROF Term Profiling timer expired
28 SIGWINCH Ign Terminal window size changed
29 SIGIO Term I/O possible on a file descriptor set up for it; SIGPOLL is a synonym
30 SIGPWR Term Power failure; sent by UPS software, handled by some init systems
31 SIGSYS Core Bad system call, or a system call blocked by a seccomp filter

Numbers 32 and 33 are real-time signals that the GNU C library reserves for its threads implementation, which is why kill -l doesn't list them.

Real-time signals

Numbers Names Default action
34 to 64 SIGRTMIN to SIGRTMAX, also written SIGRTMIN+n and SIGRTMAX-n Term

Real-time signals have no predefined meaning. Unlike standard signals, multiple instances of the same real-time signal are queued, are delivered in order, and can carry a value (sigqueue(3)). systemd uses several of them as commands to PID 1, listed in systemd(1).

Exit status after a signal

A shell reports a command killed by a signal as an exit status of 128 plus the signal number.

Signal Exit status
SIGHUP (1) 129
SIGINT (2) 130
SIGQUIT (3) 131
SIGABRT (6) 134
SIGKILL (9) 137
SIGSEGV (11) 139
SIGPIPE (13) 141
SIGTERM (15) 143

Bash's kill -l converts an exit status back into a signal name:

$ kill -l 137
KILL

Commands

Command Package Selects processes by Notes
kill (Bash built-in) bash PID, or job (%1) Used when you type kill in Bash; kill -l and kill -L list signals
/usr/bin/kill procps-ng (Debian, Ubuntu, Gentoo), util-linux (RHEL, AlmaLinux, Rocky Linux, Arch Linux) PID; the util-linux version also accepts process names -L prints a table of numbers and names
pkill, pgrep procps-ng Name pattern, user (-u), exact name (-x), full command line (-f), parent (-P) pgrep lists the PIDs pkill would signal
killall psmisc Exact process name psmisc is installed in all six lab cloud images; a minimal installation may lack it
systemctl kill systemd Unit Signals the unit's main process or every process in its cgroup (--kill-whom=)
rc-service <SERVICE> stop OpenRC Service Sends the service's stop signal following its retry schedule (default SIGTERM/5: SIGTERM, then wait up to 5 seconds)

A PID of -1 sends the signal to every process the sender may signal, and a negative PID (kill -TERM -- -<PGID>) sends it to every process in that process group. Signal 0 checks whether a process exists and can be signalled, without sending anything.

Examples

kill -TERM 1234                 # ask process 1234 to terminate
kill -HUP "$(pgrep -o -x nginx)"  # reload a daemon that handles SIGHUP
pkill -u alice -x sleep         # terminate alice's processes named exactly "sleep"
kill -0 1234 && echo running    # test whether process 1234 exists

Files

Path Purpose
/proc/<PID>/status SigPnd, ShdPnd (pending), SigBlk (blocked), SigIgn (ignored) and SigCgt (caught) signal masks, as hexadecimal bit masks where bit n-1 is signal n
/proc/sys/kernel/core_pattern Where and how core dumps for Core signals are written

See also

  • signal(7), kill(2), sigaction(2), signalfd(2) (man-pages 6.9.1)
  • kill(1) (procps-ng 4.0, or util-linux 2.40 to 2.42), pkill(1), bash(1) (kill and trap built-ins)
  • systemd.kill(5) for KillSignal=, KillMode= and TimeoutStopSec=
  • openrc-run(8), start-stop-daemon(8) and supervise-daemon(8) for OpenRC's stop signals and retry schedule