Instiq
Chapter 1 · Installing Linux and Using VMs / Containers·v1.0.0·Updated 7/6/2026·~11 min

What's changed: Initial version (topic 1.01, subtopics 1.01.1–1.01.5)

1.4Creating, Monitoring, and Terminating Processes

Key points

Learn basic process management: running jobs in the foreground/background (&, bg, fg, jobs), keeping work running after logout with nohup/screen/tmux, monitoring with top/ps/pstree/uptime/pgrep, and sending signals with kill/pkill/killall.

Run a long task while doing other work, stop a runaway process, find what is loading the box—server operations are daily process management. Master shell job control, signals, and the monitoring commands.

1.4.1Job control and surviving logout

  • Append & to start in the background. Ctrl+Z suspends; resume with bg or bring back with fg. List with jobs.
  • nohup keeps a command running after logout (terminal hangup = SIGHUP). The idiom is nohup long-task &.
  • screen and tmux are terminal multiplexers: detach/reattach sessions at will, so work survives a dropped SSH connection.

1.4.2Monitoring and terminating with signals

  • Monitor with top (live CPU/memory leaders), ps (snapshot; ps aux is the staple), pstree (parent-child tree), and uptime (uptime and load average).
  • pgrep finds PIDs by name and attributes (pgrep -u user01 nginx).
  • Terminate with kill (by PID), pkill (by name/attributes), killall (exact name). Default is SIGTERM (15, polite request); the last resort is SIGKILL (9, force). SIGHUP (1) means hangup / reload config.
Exam point

Staples: survive logout = nohup (or screen/tmux), suspended → background = Ctrl+Z then bg, SIGTERM first, SIGKILL only if needed, find by name = pgrep/pkill, send by PID = kill. Jumping straight to kill -9 is rarely the right answer (no cleanup runs).

Walk the typical scenarios. Start long builds with nohup make all > build.log & and they survive dropped SSH. For more flexibility open a tmux session, detach with Ctrl+b d, and tmux attach later. If you suspended an editor with Ctrl+Z, check jobs and bring it back with fg %1 or push it back with bg %1. For load hunting: uptime for the load average trend, top for CPU/memory leaders, pstree to see which parent spawned it. To stop something, confirm the PID with pgrep -f app, then escalate: kill <PID> (SIGTERM) → kill -9 <PID> (SIGKILL) only if it will not die. Note killall signals every process whose name matches exactly—it can hit unintended same-name processes.

GoalUseNote
Keep running after logoutnohup / screen / tmuxscreen/tmux can reattach
Suspend → resume in backgroundCtrl+Z → bgfg brings it forward
Load overviewuptime / topLoad average → top processes
Graceful stop → forcekill (SIGTERM) → kill -9 (SIGKILL)Avoid jumping to -9
Warning

Trap: "kill terminates a process by name" is wrong—kill takes a PID (by name is pkill/killall). And "SIGKILL (9) lets the process clean up" is wrong—SIGKILL is uncatchable and immediate; it is SIGTERM that allows cleanup.

Commands organized into job control, monitoring, and signaling.
Control, monitor, terminate

1.4.3Section summary

  • Job control = & / Ctrl+Z / bg / fg / jobs; survive logout with nohup, screen, tmux
  • Monitor = top/ps/pstree/uptime/pgrep; terminate SIGTERM → SIGKILL, by name with pkill/killall

Sign in to track progress — Log in.

Quick check

(just a quick review)

Q1. You want a batch job to keep running even if the SSH connection drops. Which command?

Q2. You pressed Ctrl+Z and suspended a job. Which command resumes it in the background?

Q3. A process (PID 4321) is unresponsive. What should you try first?

Check your understandingPractice questions for Chapter 1: Installing Linux and Using VMs / Containers