/dʒɑːb kənˈtroʊl/

noun — “telling your processes who’s boss without lifting a finger.”

Job Control is a feature of Unix-like operating systems that lets users manage multiple processes (jobs) from a single shell or Command Line Interface. It enables starting, stopping, pausing, resuming, and monitoring background and foreground jobs efficiently, giving the illusion of multitasking while keeping the user in command.

Each job in a shell is typically associated with a process group. Job Control uses signals like SIGSTOP, SIGCONT, and SIGKILL to manipulate process states. For instance, pressing Ctrl+Z suspends a job, moving it to the background, while the `fg` command brings it back to the foreground. Background jobs continue running without tying up the terminal, while foreground jobs receive direct input from the user.

Job Control interacts closely with process management and scheduling. The shell maintains a job table, mapping each job to its corresponding Process Management structures and tracking statuses. Commands like `jobs`, `kill`, and `bg` provide insights into what’s running, stopped, or waiting — essentially letting you micro-manage your CPU’s social calendar.

Advanced Job Control scenarios include pipelines, asynchronous scripts, and interactive sessions. By combining Redirection and File Descriptors, jobs can run silently in the background while logging output, alerting on errors, or feeding results into other processes. This is a cornerstone of automation, monitoring, and shell scripting workflows.

Misusing Job Control can lead to zombie or orphaned processes, especially if parent shells exit unexpectedly. Understanding how Job Control interacts with signals, process groups, and the scheduler is key to maintaining a clean, responsive system.

Conceptually, Job Control is like being a conductor in an orchestra of processes: you cue who plays when, pause sections, and even let some instruments play softly in the background.

Job Control is like giving your terminal a remote control — pause, play, or mute your processes with a click of the keys.

See Shell Scripting, Process Management, Context Switch, Pipe, Foreground & Background.