Bird
Raised Fist0
Linux CLIscripting~10 mins

jobs command in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - jobs command
Start shell session
↓
Run command in background (&)
↓
jobs command typed
↓
Shell lists background jobs
↓
User sees job IDs, status, and commands
↓
User can manage jobs (fg, bg, kill)
The jobs command shows all background jobs in the current shell session with their status and job IDs.
Execution Sample
Linux CLI
sleep 30 &
jobs
Run a sleep command in the background and then list all background jobs.
Execution Table
StepCommand EnteredShell ActionOutput
1sleep 30 &Starts sleep in background, assigns job ID[1] 12345
2jobsLists all background jobs[1]+ Running sleep 30
💡 No more commands; jobs output shows current background jobs.
Variable Tracker
VariableStartAfter 1After 2Final
jobs_listempty[1] sleep 30[1] sleep 30[1] sleep 30
Key Moments - 3 Insights
Why does the jobs command only show background jobs and not all running processes?
Because jobs only tracks processes started in the current shell session with & or stopped jobs, as shown in the execution_table step 2 output.
What does the number in brackets like [1] mean in the jobs output?
It is the job ID assigned by the shell to manage the background job, visible in execution_table step 1 output.
Why might a job show as 'Stopped' instead of 'Running' in jobs output?
Because the job was paused (e.g., with Ctrl+Z), so jobs shows its status as 'Stopped' as per the output format in step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the job ID assigned to the sleep command?
A[12345]
B[30]
C[1]
D[&]
💡 Hint
Check the output column in step 1 of the execution_table where the job ID is shown in brackets.
At which step does the shell list the background jobs?
AStep 2
BAfter exit
CStep 1
DBefore any command
💡 Hint
Look at the Command Entered column to see when 'jobs' command is typed.
If the sleep command was run without &, what would the jobs command show?
AIt would show the sleep job as running
BIt would show no jobs
CIt would show an error
DIt would list all system processes
💡 Hint
Recall that jobs only lists background jobs started with & as shown in the key_moments.
Concept Snapshot
jobs command:
- Lists background jobs in current shell
- Shows job ID, status, and command
- Only tracks jobs started with & or stopped jobs
- Use fg/bg to manage jobs
- Useful to monitor and control background tasks
Full Transcript
The jobs command in Linux shows all background jobs running in the current shell session. When you run a command with & at the end, it starts in the background and gets a job ID like [1]. Typing jobs lists these jobs with their status such as Running or Stopped. This helps you keep track of tasks running behind the scenes. Jobs only shows processes started in the current shell with & or those stopped with Ctrl+Z. You can bring jobs to the foreground with fg or continue them in background with bg. This visual trace showed running 'sleep 30 &' which started a background job with ID [1], then running jobs listed it as running. Understanding jobs helps manage multiple tasks easily in the shell.

Practice

(1/5)
1. What does the jobs command do in a Linux shell?
easy
A. Lists background and stopped tasks in the current shell
B. Shows all running processes on the system
C. Terminates all background jobs
D. Starts a new background job

Solution

  1. Step 1: Understand the purpose of jobs

    The jobs command shows tasks started in the current shell that are either stopped or running in the background.
  2. Step 2: Compare with other options

    Options A, B, and C describe different commands or actions unrelated to jobs.
  3. Final Answer:

    Lists background and stopped tasks in the current shell -> Option A
  4. Quick Check:

    jobs lists current shell jobs [OK]
Hint: Remember: jobs shows your shell's paused or background tasks [OK]
Common Mistakes:
  • Confusing jobs with ps command
  • Thinking jobs starts or kills tasks
  • Assuming jobs shows system-wide processes
2. Which of the following is the correct syntax to list all jobs with their process IDs using the jobs command?
easy
A. jobs -a
B. jobs --list-pid
C. jobs -p
D. jobs -l

Solution

  1. Step 1: Recall jobs options

    The -l option with jobs lists jobs with their process IDs.
  2. Step 2: Verify other options

    -p lists only PIDs without job info, --list-pid is invalid, and -a shows all jobs including those not started by the shell.
  3. Final Answer:

    jobs -l -> Option D
  4. Quick Check:

    jobs -l shows jobs with PIDs [OK]
Hint: Use -l to see job numbers plus process IDs [OK]
Common Mistakes:
  • Using invalid options like --list-pid
  • Confusing -p with -l
  • Assuming -a shows PIDs
3. Given the following shell session:
$ sleep 100 &
[1] 12345
$ sleep 200 &
[2] 12346
$ jobs
[1]+  Running                 sleep 100 &
[2]-  Running                 sleep 200 &
What will be the output of jobs -l?
medium
A. [1]+ 12345 Stopped sleep 100 & [2]- 12346 Stopped sleep 200 &
B. [1]+ Running sleep 100 & [2]- Running sleep 200 &
C. [1]+ 12345 Running sleep 100 & [2]- 12346 Running sleep 200 &
D. No jobs to display

Solution

  1. Step 1: Understand jobs output

    The jobs command shows job number, status, and command. The -l option adds the process ID after the job number.
  2. Step 2: Match output format

    Since both jobs are running with PIDs 12345 and 12346, jobs -l will show job number, PID, status, and command.
  3. Final Answer:

    [1]+ 12345 Running sleep 100 & [2]- 12346 Running sleep 200 & -> Option C
  4. Quick Check:

    jobs -l adds PIDs to normal jobs output [OK]
Hint: jobs -l shows PIDs next to job numbers [OK]
Common Mistakes:
  • Ignoring PIDs in output
  • Confusing Running with Stopped status
  • Expecting no jobs listed
4. You ran sleep 300 & and then jobs shows the job as stopped. Which command will resume the job in the background?
medium
A. kill %1
B. bg %1
C. fg %1
D. stop %1

Solution

  1. Step 1: Understand job states and commands

    A stopped job is paused. The bg command resumes it in the background, while fg resumes it in the foreground.
  2. Step 2: Choose correct command for background resume

    Since the question asks to resume in background, bg %1 is correct. kill terminates, and stop is invalid here.
  3. Final Answer:

    bg %1 -> Option B
  4. Quick Check:

    Resume stopped job in background = bg %job_number [OK]
Hint: Use bg %job_number to resume stopped jobs in background [OK]
Common Mistakes:
  • Using fg instead of bg for background resume
  • Trying to kill instead of resume
  • Using invalid stop command
5. You have multiple background jobs running. You want to bring job number 3 to the foreground and then stop it temporarily. Which sequence of commands should you use?
hard
A. fg %3, then press Ctrl+Z
B. bg %3, then press Ctrl+C
C. kill %3, then fg %3
D. jobs %3, then stop %3

Solution

  1. Step 1: Bring job 3 to foreground

    Use fg %3 to bring job number 3 to the foreground so you can interact with it.
  2. Step 2: Stop the job temporarily

    Pressing Ctrl+Z sends a stop signal, pausing the job and returning control to the shell.
  3. Final Answer:

    fg %3, then press Ctrl+Z -> Option A
  4. Quick Check:

    Foreground job then Ctrl+Z to stop it [OK]
Hint: Use fg %job then Ctrl+Z to pause foreground job [OK]
Common Mistakes:
  • Using bg instead of fg to bring job forward
  • Trying to kill instead of stop
  • Using invalid stop command
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard