• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer navigation

The Geek Diary

  • OS
    • Linux
    • CentOS/RHEL
    • Solaris
    • Oracle Linux
    • VCS
  • Interview Questions
  • Database
    • oracle
    • oracle 12c
    • ASM
    • mysql
    • MariaDB
  • DevOps
    • Docker
    • Shell Scripting
  • Big Data
    • Hadoop
    • Cloudera
    • Hortonworks HDP

Understanding the job control commands in Linux – bg, fg and CTRL+Z

by admin

Whats a job in Linux

A job is a process that the shell manages. Each job is assigned a sequential job ID. Because a job is a process, each job has an associated PID. There are three types of job statuses:
1. Foreground: When you enter a command in a terminal window, the command occupies that terminal window until it completes. This is a foreground job.
2. Background: When you enter an ampersand (&) symbol at the end of a command line, the command runs without occupying the terminal window. The shell prompt is displayed immediately after you press Return. This is an example of a background job.
3. Stopped: If you press Control + Z for a foreground job, or enter the stop command for a background job, the job stops. This job is called a stopped job.

Note: Except the Bourne shell, the other shells support job control.

Job Control Commands

Job control commands enable you to place jobs in the foreground or background, and to start or stop jobs. The table describes the job control commands.

Option Description
jobs Lists all jobs
bg %n Places the current or specified job in the background, where n is the job ID
fg %n Brings the current or specified job into the foreground, where n is the job ID
Control-Z Stops the foreground job and places it in the background as a stopped job
Note: The job control commands enable you to run and manage multiple jobs within a shell. However, you can use the job control commands only in the shell where the job was initiated.

Running a Job in the Background

To run a job in the background, you need to enter the command that you want to run, followed by an ampersand (&) symbol at the end of the command line. For example, run the sleep command in the background.

$ sleep 100 & 
[1] 1302
$

The shell returns the job ID, in brackets, that it assigns to the command and the associated PID. With the job ID, you can use the job control commands to manage the job whereas the kernel uses PIDs to manage jobs.

When a background job is complete and you press Return, the shell displays a message indicating the job is done.

[1] + Done         sleep 100 &
$

Managing the background jobs

You can use the jobs command to list the jobs that are currently running or suspended in the background.

$ jobs
[1]+  Running                 sleep 100 &

You can use the fg command to bring a background job to the foreground.

$ fg % 1
sleep 100
Note: The foreground job occupies the shell until the job is completed, suspended, or stopped and placed into the background.

You can use the ‘Control+Z keys and bg command to return a job to the background. The Control+Z keys suspend the job, and place it in the background as a stopped job. The bg command runs the job in the background. For example:
1. Using CTRL+Z

$ sleep 100
^Z
[1]+  Stopped                 sleep 100
$ jobs
[1]+  Stopped                 sleep 100

2. Using bg

$ bg % 1
[1]+ sleep 100 &
$ jobs
[1]+  Running                 sleep 100 &
Note: When you place a stopped job either in the foreground or background, the job restarts.

Filed Under: Linux

Some more articles you might also be interested in …

  1. How to enable Debug Option For CIFS Module in CentOS/RHEL 7 and 8
  2. CentOS / RHEL 7 : How to specify command-line arguments and options when the dhcpd service is started
  3. CentOS / RHEL 7 : How to enable telnet for a group of users
  4. pkgmk Command Examples in Linux
  5. guake Command Examples in Linux
  6. UNIX / Linux : Send mail with attachment using mutt
  7. semanage: command not found
  8. How to Configure Multiple MySQL Servers On One System Using mysqld_multi
  9. mke2fs Command Examples in Linux
  10. disown Command Examples in Linux

You May Also Like

Primary Sidebar

Recent Posts

  • “az storage blob” Command Examples (Manage blob storage containers and objects in Azure)
  • “az storage account” Command Examples (Manage storage accounts in Azure)
  • “az sshkey” Command Examples (Manage ssh public keys with virtual machines)
  • “az redis” Command Examples

© 2023 · The Geek Diary

  • Archives
  • Contact Us
  • Copyright