Glossary

PID

A PID (Process ID) is the unique integer identifier assigned to each running process by the kernel. PIDs are allocated sequentially from 1 (init) up to a maximum set by /proc/sys/kernel/pid_max (traditionally 32768, often raised to 4 million on modern systems), wrapping around once they hit that ceiling. The kernel guarantees that no two running processes share a PID at any given moment.

You see PIDs everywhere: in ps, top, htop, /proc/<PID>/, kill <PID>, lsof -p <PID>, and strace -p <PID>. The shell variable $$ expands to the shell's own PID, while $! gives the PID of the most recently backgrounded job.

echo $$                      # current shell's PID
sleep 100 &
echo $!                      # the sleep's PID
kill $!                      # signal it

PIDs are reused after their process exits, which can cause subtle races: by the time you try to kill PID 12345, that PID may belong to a completely different process. The pidfd interface (and pidfd_open system call) was added to eliminate this race—a pidfd refers to a specific process and becomes invalid when it exits, rather than silently targeting a new one.

Related terms: Process

Discussed in:

Also defined in: Textbook of Linux