JOBS(1) | User Commands | JOBS(1) |
jobs, fg, bg, stop, notify - control process execution
jobs [-p | -l] [% job_id...]
jobs -x command [arguments]
fg [% job_id...]
bg [% job_id...]
stop % job_id...
stop pid...
jobs [-l]
fg [% job_id]
bg [% job_id]...
notify [% job_id]...
stop % job_id...
stop pid...
jobs [-lnp] [% job_id...]
fg [% job_id...]
bg [% job_id...]
stop % job_id...
stop pid...
jobs [-lnp] [job_id...]
fg [job_id...]
bg [job_id...]
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
-p
-x
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:
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 +
−
?<string>
n
pref
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).
The C shell built-in, jobs, without an argument, lists the active jobs under job control.
-l
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.
% %+ %%
%−
%j
%?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.
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
-n
-p
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
%string
%?string
%%
%+
%−
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).
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
-n
-p
job_id can be specified to jobs, fg, and bg as one of the following:
number
-number
%number
%string
%?string
%+
%%
%-
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.
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
job-number
state
Running
Done
Done(code)
Stopped
Stopped(SIGTSTP)
Stopped(SIGSTOP)
Stopped(SIGTTIN)
Stopped(SIGTTOU)
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
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.
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.
The following exit values are returned for jobs, fg, and bg:
0
>0
The following exit values are returned for jobs:
0
>0
The following exit values are returned for fg:
exit status of last job
non-zero
The following exit values are returned for bg:
0
>0
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Committed |
Standard | See standards(7). |
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Uncommitted |
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 | OmniOS |