the common signals
Out of dozens of defined signals, a handful come up constantly, and knowing what each means turns a lot of confusing behavior into something obvious. Think of them as a small vocabulary of nudges, each with a customary meaning and a default action the kernel takes if you have not arranged otherwise.
Here are the ones you will meet most. SIGINT (interrupt) is what Ctrl-C sends; the polite 'please stop' from the keyboard — default: terminate. SIGTERM (terminate) is the standard, catchable 'please shut down cleanly' that kill sends by default and that init systems use to stop services — default: terminate, but a program may catch it to flush files first. SIGKILL is the unstoppable one: it cannot be caught, blocked, or ignored, and the kernel destroys the process immediately — use it only when SIGTERM was ignored, because the process gets no chance to clean up. SIGSEGV (segmentation violation) is sent by the kernel when your program touches memory it may not (a dereferenced null or wild pointer) — default: terminate, usually with a core dump. SIGCHLD is sent to a parent when one of its children stops or dies, so the parent knows to wait() and reap it — default: ignore. SIGPIPE is sent when you write to a pipe or socket whose read end is gone — default: terminate.
The grouping that matters: SIGINT and SIGTERM are requests you can intercept and handle gracefully; SIGKILL (and SIGSTOP) are the two no program can override, the system's ultimate authority. SIGSEGV and SIGPIPE are usually symptoms of a bug or a vanished peer rather than something you send on purpose. Memorizing this short list is one of the highest-leverage things in systems programming — it explains why kill -9 always works, why Ctrl-C sometimes does not stop a program (it installed a handler), and why a crash report says 'signal 11'.
$ kill 1234 # sends SIGTERM — asks process 1234 to shut down $ kill -9 1234 # sends SIGKILL — destroys it, no cleanup Segfault crash? The kernel sent SIGSEGV (signal 11) because you dereferenced a bad pointer.
TERM asks, KILL forces, SEGV is the crash, CHLD is 'your kid finished', PIPE is 'the reader left'.
SIGKILL and SIGSTOP are the only two signals a process can never catch, block, or ignore — by design, so the system always retains a way to stop a runaway process. Everything else can be handled (or mishandled).