Practical job control for managing tasks started from your shell. 06.12.2025 | reading time: 2 min Want to run long commands without losing the terminal? The shell builtin `jobs` helps the user list and manage background and stopped processes started from the current interactive shell. Live demo Follow this short session to see job control in action; every command below is typed in an interactive shell. ```bash $ sleep 300 & [1] 12345 $ jobs [1]+ Running sleep 300 & $ fg %1 sleep 300 # press Ctrl-Z to suspend the foreground job [1]+ Stopped sleep 300 $ bg %1 [1]+ sleep 300 & $ jobs -l [1]+ 12345 Running sleep 300 & $ kill %1 ``` Deep tricks Use `jobs -l` to reveal PIDs, or `disown` to detach a job so it survives shell exit; job specs like %1, %string or %?string let the user refer to jobs quickly, and common states are Running, Stopped and Done; remember that `jobs` is a shell builtin and only tracks processes started from the current interactive shell, so scripts usually run without job control unless explicitly enabled. When to use other tools For persistent background work across logouts prefer `nohup` or terminal multiplexers, and for scheduled one-offs use `at` or `cron`; `jobs` is perfect for quick interactive juggling but not for long-lived daemons or system services. Next steps Mastering job control makes the shell feel nimble and predictable; practice bringing jobs to foreground, backgrounding them, inspecting PIDs and disowning when needed, then expand into screen or systemd tools for production tasks — and consider deepening LINUX skills toward certifications like CompTIA Linux+ or LPIC-1 with intensive exam preparation at bitsandbytes.academy. Join Bits & Bytes Academy First class LINUX exam preparation. utilities processes scripting troubleshooting