JOBS(1) User Commands JOBS(1)
NAME
jobs, fg, bg, stop, notify - control process execution
SYNOPSIS
sh jobs [
-p |
-l] [%
job_id...]
jobs -x command [
arguments]
fg [%
job_id...]
bg [%
job_id...]
stop %
job_id...
stop pid...
csh jobs [
-l]
fg [%
job_id]
bg [%
job_id]...
notify [%
job_id]...
stop %
job_id...
stop pid...
ksh jobs [
-lnp] [%
job_id...]
fg [%
job_id...]
bg [%
job_id...]
stop %
job_id...
stop pid...
ksh93 jobs [
-lnp] [
job_id...]
fg [
job_id...]
bg [
job_id...]
DESCRIPTION
sh When Job Control is enabled, the Bourne shell built-in
jobs reports
all jobs that are stopped or executing in the background. If
%job_id is omitted, all jobs that are stopped or running in the background is
reported. The following options modify or enhance the output of
jobs:
-l Reports the process group
ID and working directory of the jobs.
-p Reports only the process group
ID of the jobs.
-x Replaces any
job_id found in
command or
arguments with the
corresponding process group
ID, and then executes
command passing it
arguments.
When the shell is invoked as
jsh, Job Control is enabled in addition
to all of the functionality described previously for
sh. Typically
Job Control is enabled for the interactive shell only. Non-
interactive shells typically do not benefit from the added
functionality of Job Control.
With Job Control enabled every command or pipeline the user enters at
the terminal is called a
job_id. All jobs exist in one of the
following states: foreground, background or stopped. These terms are
defined as follows:
1. A job in the
foreground has read and write access to the
controlling terminal.
2. A job in the
background is denied read access and has
conditional write access to the controlling terminal (see
stty(1))
3. A
stopped job is a job that has been placed in a suspended
state, usually as a result of a
SIGTSTP signal (see
signal.h(3HEAD)).
Every job that the shell starts is assigned a positive integer,
called a
job_id number which is tracked by the shell and are used as
an identifier to indicate a specific job. Additionally, the shell
keeps track of the
current and
previous jobs. The
current job is the
most recent job to be started or restarted. The
previous job is the
first non-current job.
The acceptable syntax for a Job Identifier is of the form:
%job_id where
job_id can be specified in any of the following formats:
% or
+ for the current job
- for the previous job
?<string> specify the job for which the command line uniquely
contains
string.
n for job number
n, where
n is a job number
pref where
pref is a unique prefix of the command name (for
example, if the command
ls -l name were running in the
background, it could be referred to as
%ls);
pref cannot
contain blanks unless it is quoted.
When Job Control is enabled,
fg resumes the execution of a stopped
job in the foreground, also moves an executing background job into
the foreground. If
%job_id is omitted the current job is assumed.
When Job Control is enabled,
bg resumes the execution of a stopped
job in the background. If
%job_id is omitted the current job is
assumed.
stop stops the execution of a background job(s) by using its
job_id,
or of any process by using its
pid; see
ps(1).
csh The C shell built-in,
jobs, without an argument, lists the active
jobs under job control.
-l List process
IDs, in addition to the normal information.
The shell associates a numbered
job_id with each command sequence to
keep track of those commands that are running in the background or
have been stopped with
TSTP signals (typically Control-Z). When a
command or command sequence (semicolon-separated list) is started in
the background using the
& metacharacter, the shell displays a line
with the job number in brackets and a list of associated process
numbers:
[1] 1234 To see the current list of jobs, use the
jobs built-in command. The
job most recently stopped (or put into the background if none are
stopped) is referred to as the
current job and is indicated with a
`
+'. The previous job is indicated with a `
-'; when the current job
is terminated or moved to the foreground, this job takes its place
(becomes the new current job).
To manipulate jobs, refer to the
bg,
fg,
kill,
stop, and
% built-in
commands.
A reference to a job begins with a `
%'. By itself, the percent sign
refers to the current job.
% %+ %% The current job.
%- The previous job.
%j Refer to job
j as in: `
kill -9 %j'.
j can be a job
number, or a string that uniquely specifies the command
line by which it was started; `
fg %vi' might bring a
stopped
vi job to the foreground, for instance.
%?string Specify the job for which the command line uniquely
contains
string.
A job running in the background stops when it attempts to read from
the terminal. Background jobs can normally produce output, but this
can be suppressed using the `
stty tostop' command.
fg brings the current or specified
job_id into the foreground.
bg runs the current or specified jobs in the background.
stop stops the execution of a background job(s) by using its
job_id,
or of any process by using its
pid; see
ps(1).
notify notifies the user asynchronously when the status of the
current job or specified jobs changes.
ksh jobs displays the status of the jobs that were started in the current
shell environment. When
jobs reports the termination status of a job,
the shell removes its process
ID from the list of those known in the
current shell execution environment.
job_id specifies the jobs for which the status is to be displayed. If
no
job_id is specified, the status information for all jobs are
displayed.
The following options modify or enhance the output of
jobs:
-l (The letter ell.) Provides more information about each job
listed. This information includes the job number, current job,
process group
ID, state and the command that formed the job.
-n Displays only jobs that have stopped or exited since last
notified.
-p Displays only the process
IDs for the process group leaders of
the selected jobs.
By default,
jobs displays the status of all the stopped jobs, running
background jobs, and all jobs whose status has changed and have not
been reported by the shell.
If the
monitor option of the
set command is turned on, an interactive
shell associates a
job with each pipeline. It keeps a table of
current jobs, printed by the
jobs command, and assigns them small
integer numbers. When a job is started asynchronously with
&, the
shell prints a line which looks like:
[1] 1234 indicating that the job, which was started asynchronously, was job
number
1 and had one (top-level) process, whose process id was
1234.
If you are running a job and wish to do something else you can hit
the key ^Z (Control-Z) which sends a
STOP signal to the current job.
The shell then normally indicates that the job has been "
Stopped"
(see
OUTPUT below), and print another prompt. You can then manipulate
the state of this job, putting it in the background with the
bg command, or run some other commands and then eventually bring the job
back into the foreground with the foreground command
fg. A ^Z takes
effect immediately and is like an interrupt, in that pending output
and unread input are discarded when it is typed.
There are several ways to refer to jobs in the shell. A job can be
referred to by the process id of any process of the job or by one of
the following:
%number The job with the specified number.
%string Any job whose command line begins with
string; works only
in the interactive mode when the history file is active.
%?string Any job whose command line contains
string; works only in
the interactive mode when the history file is active.
%% Current job.
%+ Equivalent to
%%.
%- Previous job.
The shell learns immediately whenever a process changes state. It
normally informs you whenever a job becomes blocked so that no
further progress is possible, but only just before it prints a
prompt. This is done so that it does not otherwise disturb your work.
When the monitor mode is on, each background job that completes
triggers any trap set for
CHLD. When you try to leave the shell while
jobs are running or stopped, you are warned that `You have stopped
(running) jobs.' You can use the
jobs command to see what they are.
If you do this or immediately try to exit again, the shell does not
warn you a second time, and the stopped jobs are terminated.
fg moves a background job from the current environment into the
foreground. Using
fg to place a job in the foreground removes its
process
ID from the list of those known in the current shell
execution environment. The
fg command is available only on systems
that support job control. If
job_id is not specified, the current job
is brought into the foreground.
bg resumes suspended jobs from the current environment by running
them as background jobs. If the job specified by
job_id is already a
running background job,
bg has no effect and exits successfully.
Using
bg to place a job into the background causes its process
ID to
become `known in the current shell execution environment, as if it
had been started as an asynchronous list. The
bg command is available
only on systems that support job control. If
job_id is not specified,
the current job is placed in the background.
stop stops the execution of a background job(s) by using its
job_id,
or of any process by using its
pid. See
ps(1).
ksh93 jobs displays information about specified jobs that were started by
the current shell environment on standard output. The information
contains the job number enclosed in
[...], the status, and the
command line that started the job.
If
job_id is omitted,
jobs displays the status of all stopped jobs,
background jobs, and all jobs whose status has changed since last
reported by the shell.
When
jobs reports the termination status of a job, the shell removes
the job from the list of known jobs in the current shell environment.
The following options modify or enhances the output of
jobs:
-l Displays process IDs after the job number in addition to the
usual information.
-n Displays only the jobs whose status has changed since the last
prompt was displayed.
-p Displays the process group leader IDs for the specified jobs.
job_id can be specified to
jobs,
fg, and
bg as one of the following:
number The process id of
job.
-number The process group id of
job.
%number The job number.
%string The job whose name begins with
string.
%?string The job whose name contains
string.
%+ %% The current job.
%- The previous job.
fg places the specified jobs into the foreground in sequence and
sends a
CONT signal to start each running. If
job_id is omitted, the
most recently started or stopped background job is moved to the
foreground.
bg places the specified jobs into the background and sends a
CONT signal to start them running. If
job_id is omitted, the most recently
started or stopped background job is resumed or continued in the
background.
OUTPUT
If the
-p option is specified, the output consists of one line for
each process
ID:
"%d\n", "process ID" Otherwise, if the
-l option is not specified, the output is a series
of lines of the form:
"[%d] %c %s %s\n",
job-number,
current,
state,
command where the fields are as follows:
current The character
+ identifies the job that would be used
as a default for the
fg or
bg commands. This job can
also be specified using the
job_id %+ or
%% . The
character
- identifies the job that would become the
default if the current default job were to exit; this
job can also be specified using the
job_id %- . For
other jobs, this field is a space character. At most,
one job can be identified with
+ and at most one job
can be identified with
-. If there is any suspended
job, then the current job is a suspended job. If there
are at least two suspended jobs, then the previous job
is also a suspended job.
job-number A number that can be used to identify the process group
to the
wait,
fg,
bg, and
kill utilities. Using these
utilities, the job can be identified by prefixing the
job number with
%.
state One of the following strings in the POSIX Locale:
Running Indicates that the job has not been
suspended by a signal and has not
exited.
Done Indicates that the job completed
and returned exit status zero.
Done(
code)
Indicates that the job completed
normally and that it exited with
the specified
non-zero exit status,
code, expressed as a decimal
number.
Stopped Indicates that the job was stopped.
Stopped(SIGTSTP) Indicates that the job was
suspended by the
SIGTSTP signal.
Stopped(SIGSTOP) Indicates that the job was
suspended by the
SIGSTOP signal.
Stopped(SIGTTIN) Indicates that the job was
suspended by the
SIGTTIN signal.
Stopped(SIGTTOU) Indicates that the job was
suspended by the
SIGTTOU signal.
The implementation can substitute the string
Suspended in place of
Stopped. If the job was terminated by a
signal, the format of
state is unspecified, but it is
visibly distinct from all of the other
state formats
shown here and indicates the name or description of the
signal causing the termination.
command The associated command that was specified to the shell.
If the
-l option is specified, a field containing the process group
ID is inserted before the
state field. Also, more processes in a
process group can be output on separate lines, using only the process
ID and
command fields.
ENVIRONMENT VARIABLES
See
environ(7) for descriptions of the following environment
variables that affect the execution of
jobs,
fg, and
bg:
LANG,
LC_ALL,
LC_CTYPE,
LC_MESSAGES, and
NLSPATH.
EXIT STATUS
sh, csh, ksh The following exit values are returned for
jobs,
fg, and
bg:
0 Successful completion.
>0 An error occurred.
ksh93 The following exit values are returned for
jobs:
0 The information for each job is written to standard output.
>0 One or more jobs does not exist.
The following exit values are returned for
fg:
exit status of last job One or more jobs has been brought into the
foreground.
non-zero One or more jobs does not exist or has
completed.
The following exit values are returned for
bg:
0 All background jobs are started.
>0 One more jobs does not exist or there are no background jobs.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
csh, sh, ksh +--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Committed |
+--------------------+-------------------+
|Standard | See
standards(7). |
+--------------------+-------------------+
ksh93 +--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Uncommitted |
+--------------------+-----------------+
SEE ALSO
csh(1),
kill(1),
ksh(1),
ksh93(1),
ps(1),
sh(1),
shell_builtins(1),
stop(1),
stty(1),
wait(1),
signal.h(3HEAD),
attributes(7),
environ(7),
standards(7) November 2, 2007 JOBS(1)