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. This is done using your operating system and shell such as bash/ksh or POSIX shell.
|jobs command details|
|Description||Show the active|
jobs in shell
|Estimated completion time||10m|
Displays status of jobs in the current shell session.
The basic syntax is as follows:
jobs [options] jobID
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:
To suspend ping command job hit the Ctrl-Z key sequence.
To display the status of jobs in the current shell, enter:
 7895 Running gpass &  7906 Running gnome-calculator & - 7910 Running gedit fetch-stock-prices.py & + 7946 Stopped ping cyberciti.biz
To display the process ID or jobs for the job whose name begins with "p," enter:
$ jobs -p %p
$ jobs %p
- 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.
Pass the -l(lowercase L) option to jobs command for more information about each job listed, run:
$ jobs -l
First, start a new job as follows:
$ sleep 100 &
Now, only show jobs that have stopped or exited since last notified, type:
$ jobs -n
- Running sleep 100 &
Pass the -p option to jobs command to display PIDs only:
$ jobs -p
7895 7906 7910 7946 7949
Pass the -r option to jobs command to display only running jobs only, type:
$ jobs -r
 Running gpass &  Running gnome-calculator & - Running gedit fetch-stock-prices.py &
Pass the -s option to jobs command to display only stopped jobs only, type:
$ jobs -s
+ Stopped ping cyberciti.biz
To resume the ping cyberciti.biz job by entering the following bg command:
$ bg %4
From the bash(1) command man page:
|-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./td>|
A note about /usr/bin/jobs and shell builtin
Type the following type command to find out whether jobs is part of shell, external command or both:
$ type -a jobs
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.
This tutorials is also available in a quick video format:
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!