Bird
Raised Fist0
Linux CLIscripting~5 mins

fg and bg commands in Linux CLI - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you start a task in the terminal and want to pause it or run it in the background so you can do other things. The fg and bg commands help you switch tasks between the foreground and background easily.
When you start a long-running script and want to pause it temporarily to do something else.
When you accidentally start a process in the foreground but want it to keep running while you use the terminal.
When you want to bring a background task back to the foreground to interact with it.
When managing multiple tasks in one terminal session without opening new windows.
When you want to stop a running process without killing it and resume it later.
Commands
Starts a simple command that waits for 100 seconds. This runs in the foreground and blocks the terminal.
Terminal
sleep 100
Expected OutputExpected
No output (command runs silently)
Pressing Ctrl+Z pauses (suspends) the running foreground process and puts it in the background in a stopped state.
Terminal
Ctrl+Z
Expected OutputExpected
[1]+ Stopped sleep 100
Resumes the stopped job in the background so it keeps running but frees the terminal for other commands.
Terminal
bg
Expected OutputExpected
[1]+ sleep 100 &
Lists all current jobs with their status so you can see which tasks are running or stopped in the background.
Terminal
jobs
Expected OutputExpected
[1]+ Running sleep 100 &
Brings the most recent background job back to the foreground so you can interact with it directly.
Terminal
fg
Expected OutputExpected
sleep 100
Key Concept

If you remember nothing else, remember: fg brings a background job to the foreground, and bg resumes a stopped job in the background.

Common Mistakes
Trying to use fg or bg without any jobs running
The commands fail because there is no job to bring to foreground or background.
Make sure you have a stopped or background job by running jobs before using fg or bg.
Using bg on a job that is already running
bg will not change the state and may confuse the user since the job is already in background running.
Check job status with jobs and only use bg on stopped jobs.
Pressing Ctrl+C to stop a job instead of Ctrl+Z
Ctrl+C kills the process instead of pausing it, so you lose the job.
Use Ctrl+Z to pause and suspend the job if you want to resume it later.
Summary
Use Ctrl+Z to pause a running foreground job and send it to background in stopped state.
Use bg to resume a stopped job in the background so it keeps running.
Use fg to bring a background job back to the foreground for interaction.

Practice

(1/5)
1. What does the fg command do in a Linux shell?
easy
A. Brings a background job to the foreground for interaction
B. Stops a running job immediately
C. Lists all running jobs
D. Terminates a background job

Solution

  1. Step 1: Understand the purpose of fg

    The fg command is used to bring a job running in the background to the foreground so you can interact with it directly.
  2. Step 2: Compare with other commands

    jobs lists jobs, bg resumes jobs in background, and stopping or terminating jobs use other commands.
  3. Final Answer:

    Brings a background job to the foreground for interaction -> Option A
  4. Quick Check:

    fg = bring job to foreground [OK]
Hint: Remember: fg = foreground, bg = background [OK]
Common Mistakes:
  • Confusing fg with bg
  • Thinking fg lists jobs
  • Assuming fg stops jobs
2. Which of the following is the correct syntax to resume a stopped job in the background?
easy
A. fg %1
B. bg %1
C. jobs %1
D. stop %1

Solution

  1. Step 1: Identify the command to resume a stopped job in background

    The bg command resumes a stopped job in the background, allowing the terminal to be free.
  2. Step 2: Understand job specification

    Using %1 specifies job number 1. So bg %1 resumes job 1 in background.
  3. Final Answer:

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

    bg %jobnumber resumes job in background [OK]
Hint: Use bg with %jobnumber to resume in background [OK]
Common Mistakes:
  • Using fg instead of bg to resume in background
  • Trying to use jobs command to resume
  • Using stop which is invalid
3. Given the following commands run in a terminal:
sleep 100 &
jobs
fg %1

What will happen after running fg %1?
medium
A. The sleep command will continue running in the background
B. An error will occur because %1 is invalid
C. The sleep command will be terminated
D. The sleep command will be brought to the foreground and block the terminal

Solution

  1. Step 1: Analyze the commands

    sleep 100 & runs sleep in background. jobs lists it as job 1. fg %1 brings job 1 to foreground.
  2. Step 2: Understand effect of fg

    Bringing sleep to foreground means it blocks terminal until it finishes or is stopped.
  3. Final Answer:

    The sleep command will be brought to the foreground and block the terminal -> Option D
  4. Quick Check:

    fg %1 = foreground job blocks terminal [OK]
Hint: fg brings job to foreground and blocks terminal [OK]
Common Mistakes:
  • Thinking fg keeps job in background
  • Assuming fg terminates job
  • Believing %1 is invalid without jobs output
4. You ran a command in the background with sleep 200 & but accidentally typed fg 1 instead of fg %1. What will happen?
medium
A. The job will be brought to foreground successfully
B. The job will continue running in background silently
C. An error message will appear: 'fg: 1: no such job'
D. The shell will terminate

Solution

  1. Step 1: Understand job specification syntax

    The fg command requires job IDs to be prefixed with %, e.g., fg %1.
  2. Step 2: Analyze incorrect command

    Typing fg 1 without % causes shell to look for a job named '1' which does not exist, causing an error.
  3. Final Answer:

    An error message will appear: 'fg: 1: no such job' -> Option C
  4. Quick Check:

    Job IDs need % prefix for fg/bg [OK]
Hint: Always prefix job number with % in fg/bg commands [OK]
Common Mistakes:
  • Omitting % before job number
  • Assuming fg accepts plain numbers
  • Ignoring error messages
5. You have two stopped jobs listed by jobs as:
[1]+  Stopped                 nano file1.txt
[2]-  Stopped                 vim file2.txt

How do you resume vim file2.txt in the background and then bring nano file1.txt to the foreground?
hard
A. bg %2 followed by fg %1
B. fg %2 followed by bg %1
C. bg %1 followed by fg %2
D. fg %1 followed by fg %2

Solution

  1. Step 1: Resume vim in background

    Use bg %2 to resume job 2 (vim) in background so it runs without blocking terminal.
  2. Step 2: Bring nano to foreground

    Use fg %1 to bring job 1 (nano) to foreground for interaction.
  3. Final Answer:

    bg %2 followed by fg %1 -> Option A
  4. Quick Check:

    bg %job runs in background, fg %job runs in foreground [OK]
Hint: Use bg for background, fg for foreground with correct job IDs [OK]
Common Mistakes:
  • Mixing up job numbers
  • Using fg for both jobs
  • Not using % before job number
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