FAQ: Running Sawmill in the Background
When I run Sawmill in a UNIX terminal window, and then close the window, Sawmill stops working. What can I do about that?
Short Answer
Add an ampersand (&) to the end of the command line to run it in the background.
Long Answer
When you run Sawmill from the command line in UNIX by just typing the name of the program, it runs in the foreground. That means that you don't get your prompt back until Sawmill exits, and it also means that if you close your terminal window, the Sawmill server will terminate and you will not be able to use it anymore until you open another terminal window and restart Sawmill. Often, that's not what you want--you want Sawmill to keep running after you close the window. You can do that by running Sawmill in the background.
To run Sawmill (or any other UNIX program) in the background, add an ampersand (a & character) to the end of the command line; for instance, you might use the following command line:
./sawmill &
if the name of your Sawmill program is sawmill
.
When you type this, you will see one line of output as Sawmill is backgrounded,
and a few lines from Sawmill describing the running web server,
and then you will have your shell prompt back, so you can type more commands.
At this point, Sawmill is running in the background. You can type exit
at the prompt to close the shell, or you can just close the window, and Sawmill
will continue to run in the background.
On some rare occasions, Sawmill may generate output to the shell console. This is not usually a problem, but on some systems, background programs that generate output may be suspended, and that can make Sawmill inaccessible. To prevent this from happening, you may want to use this command line instead:
nohup ./sawmill &
The "nohup" part of the command line stands for "no hang-up" and
prevents this sort of output-related suspension problem.
Unfortunately nohup
doesn't exist on all systems.
If you don't know if your system supports nohup
,
try including nohup
on the command line--if it doesn't run that way, don't use it.
You can see current background jobs started from the current terminal using the jobs
command (with most shells). You can terminate a background job by bringing it to the front using the fg
command and then using control-C, or using the kill
command together with its process ID.
You can find the process ID (pid) of any background process (including ones started in other windows)
using the ps
command. For more information about any of these commands, use the man
command (e.g. type man ps
), or consult your UNIX documentation.