Linux / Unix: jobs Command Examples

jobs command

I am new Linux and Unix user. How do I show the active jobs on Linux or Unix-like systems using BASH/KSH/TCSH or POSIX based shell? How can I display status of jobs in the current session on Unix/Linux?

Job control is nothing but the ability to stop/suspend the execution of processes (command) and continue/resume their execution as per your requirements. The jobs command is part of your operating system and shell, such as bash/ksh or POSIX shell. You can keep a table of currently executing jobs and can be displayed with jobs command. Let us see jobs Command examples for Linux and Unix-like systems.

jobs command details
DescriptionShow the active jobs in shell
CategoryProcesses Management
Difficulty levelEasy
Root privilegesNo
OS compatibilityBSD Linux macOS Unix WSL
Est. reading time4 minutes

Purpose

Displays status of jobs in the current shell session.

Syntax

The basic syntax is as follows:

jobs
jobs jobID
jobs [options] jobID

How do I know my jobs command is part of my shell?

Use the type command or command command to find out if it a shell builtin. For instance, open the terminal application and then type:

type -a jobs
command -V jobs

Get bash version too:

bash --version

Let us find out what shell I am using on Linux/Unix, execute:

Linux and Unix jobs command examples and usage

Process control commands tested using bash running on LInux

ps -p $$

Starting few jobs for demonstration purpose

Before you start using jobs command, you need to start couple of jobs on your system. Type the following commands to start jobs:

## Start xeyes, calculator, and gedit text editor ###
xeyes &
gnome-calculator &
gedit fetch-stock-prices.py &

Finally, run ping command in foreground:

ping www.cyberciti.biz

To suspend ping command job hit the Ctrl-Z key sequence.

jobs command examples

To display the status of jobs in the current shell, enter:
$ jobs
Sample outputs:

[1]   7895 Running                 gpass &
[2]   7906 Running                 gnome-calculator &
[3]-  7910 Running                 gedit fetch-stock-prices.py &
[4]+  7946 Stopped                 ping cyberciti.biz

To display the process ID or jobs for the job whose name begins with “p,” enter:
$ jobs -p %p
OR
$ jobs %p
Sample outputs:

[4]-  Stopped                 ping cyberciti.biz

The character % introduces a job specification. In this example, you are using the string whose name begins with suspended command such as %ping.

How do I show process IDs in addition to the normal information?

Pass the -l(lowercase L) option to jobs command for more information about each job listed, run:
$ jobs -l
Sample outputs:

Fig.01: Displaying the status of jobs in the shell - jobs command examples

Fig.01: Displaying the status of jobs in the shell

How do I list only processes that have changed status since the last notification?

First, start a new job as follows:
$ sleep 100 &
Now, only show jobs that have stopped or exited since last notified, type:
$ jobs -n
Sample outputs:

[5]-  Running                 sleep 100 &

Display lists process IDs (PIDs) only

Pass the -p option to jobs command to display PIDs only:
$ jobs -p
Sample outputs:

7895
7906
7910
7946
7949

How do I display only running jobs?

Pass the -r option to jobs command to display only running jobs only, type:
$ jobs -r
Sample outputs:

[1]   Running                 gpass &
[2]   Running                 gnome-calculator &
[3]-  Running                 gedit fetch-stock-prices.py &

How do I display only jobs that have stopped?

Pass the -s option to jobs command to display only stopped jobs only, type:
$ jobs -s
Sample outputs:

[4]+  Stopped                 ping cyberciti.biz

To resume the ping cyberciti.biz job by entering the following bg command:
$ bg %4

jobs command options

Table 1: From the bash command man page
Option Description
-l Show process id’s in addition to the normal information.
-p Show process id’s only.
-n Show only processes that have changed status since the last notification are printed.
-r Restrict output to running jobs only.
-s Restrict output to stopped jobs only.
-x COMMAND is run after all job specifications that appear in ARGS have been replaced with the process ID of that job’s process group leader.

A note about /usr/bin/jobs and shell builtin

Type the following type command/command command to find out whether jobs is part of shell, external command or both:
$ type -a jobs
$ command -V jobs

Sample outputs:

jobs is a shell builtin
jobs is /usr/bin/jobs

In almost all cases you need to use the jobs command that is implemented as a BASH/KSH/POSIX shell built-in. The /usr/bin/jobs command can not be used in the current shell. The /usr/bin/jobs command operates in a different environment and does not share the parent bash/ksh’s shells understanding of jobs.

Related media

This tutorials and jobs command examples are also available in a quick video format:

Summing up

You learned about jobs command with examples on Linux and Unix-like systems. The jobs command may be a shell builtin and have more or less options as per Linux and Unix variant. Hence, please consultant the following manual pages using the man command or help command:

man bash
help jobs

🥺 Was this helpful? Please add a comment to show your appreciation or feedback.

nixCrat Tux Pixel Penguin
Hi! 🤠
I'm Vivek Gite, and I write about Linux, macOS, Unix, IT, programming, infosec, and open source. Subscribe to my RSS feed or email newsletter for updates.

2 comments… add one
  • aref ghobadi Aug 16, 2015 @ 12:31

    hello, thanks
    jobs print the daemon and stop software

  • Guillermo Lopez Apr 27, 2021 @ 19:34

    Thank you very much!

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Your comment will appear only after approval by the site admin.