||02-26-2004 11:22 PM
And my man pages are not working. Can you copy that JOB CONTROL stuff for me?
How about re-installing them?
And don't forget the text-tools like
groff and nroff with them ...
Job control refers to the ability to selectively stop
(suspend) the execution of processes and continue (resume)
their execution at a later point. A user typically
employs this facility via an interactive interface sup-
plied jointly by the system's terminal driver and bash.
The shell associates a job with each pipeline. It keeps a
table of currently executing jobs, which may be listed
with the jobs command. When bash starts a job asyn-
chronously (in the background), it prints a line that
indicating that this job is job number 1 and that the pro-
cess ID of the last process in the pipeline associated
with this job is 25647. All of the processes in a single
pipeline are members of the same job. Bash uses the job
abstraction as the basis for job control.
To facilitate the implementation of the user interface to
job control, the operating system maintains the notion of
a current terminal process group ID. Members of this pro-
cess group (processes whose process group ID is equal to
the current terminal process group ID) receive keyboard-
generated signals such as SIGINT. These processes are
said to be in the foreground. Background processes are
those whose process group ID differs from the terminal's;
such processes are immune to keyboard-generated signals.
Only foreground processes are allowed to read from or
write to the terminal. Background processes which attempt
to read from (write to) the terminal are sent a SIGTTIN
(SIGTTOU) signal by the terminal driver, which, unless
caught, suspends the process.
If the operating system on which bash is running supports
job control, bash contains facilities to use it. Typing
the suspend character (typically ^Z, Control-Z) while a
process is running causes that process to be stopped and
returns control to bash. Typing the delayed suspend char-
acter (typically ^Y, Control-Y) causes the process to be
stopped when it attempts to read input from the terminal,
and control to be returned to bash. The user may then
manipulate the state of this job, using the bg command to
continue it in the background, the fg command to continue
it in the foreground, or the kill command to kill it. A
^Z takes effect immediately, and has the additional side
effect of causing pending output and typeahead to be dis-
There are a number of ways to refer to a job in the shell.
The character % introduces a job name. Job number n may
be referred to as %n. A job may also be referred to using
a prefix of the name used to start it, or using a sub-
string that appears in its command line. For example, %ce
refers to a stopped ce job. If a prefix matches more than
one job, bash reports an error. Using %?ce, on the other
hand, refers to any job containing the string ce in its
command line. If the substring matches more than one job,
bash reports an error. The symbols %% and %+ refer to the
shell's notion of the current job, which is the last job
stopped while it was in the foreground or started in the
background. The previous job may be referenced using %-.
In output pertaining to jobs (e.g., the output of the jobs
command), the current job is always flagged with a +, and
the previous job with a -.
Simply naming a job can be used to bring it into the fore-
ground: %1 is a synonym for ``fg %1'', bringing job 1 from
the background into the foreground. Similarly, ``%1 &''
resumes job 1 in the background, equivalent to ``bg %1''.
The shell learns immediately whenever a job changes state.
Normally, bash waits until it is about to print a prompt
before reporting changes in a job's status so as to not
interrupt any other output. If the -b option to the set
builtin command is enabled, bash reports such changes
immediately. Any trap on SIGCHLD is executed for each
child that exits.
If an attempt to exit bash is made while jobs are stopped,
the shell prints a warning message. The jobs command may
then be used to inspect their status. If a second attempt
to exit is made without an intervening command, the shell
does not print another warning, and the stopped jobs are