Remember that the shell sits there listening to what you type,
and calling other programs to do jobs that it doesn't have
built-in commands to do.
Normally, when the shell calls another program, it waits for
the other program to finish. All the ampersand (&
) at the end of a
command line does is tell the shell not to wait.
Both the Bourne shell and the C shell allow background
processing.
But, on UNIX systems that have
job control (12.1
)
,
the C shell, bash
and ksh
give you a lot of extra
capabilities for manipulating background processes.
Here's the tip of the iceberg:
If you forget to put a job into the background, you can stop it
on the fly with a
suspend signal (38.1
)
by typing CTRL-z.
Then use the bg
command to put it into the
background and restart it:
% find /usr -name tim -print > mine
[CTRL-z]
Stopped
% bg
[1] find /usr -name tim -print > mine &
You can bring
the current background job (12.3
)
into the foreground with
the fg
command.
This is handy when UNIX stops the background job that needs input from
your keyboard (you can't type to jobs running in the background).
If you have a lot of background processes running, you can use
the jobs
command to list them all, and then bring a selected job into
the foreground by job number. You can also kill jobs by job number
rather than by process ID.