Running Commands in the Background

Normally, the shell waits for a command to complete before prompting you for another. If you think a command will take a long time to complete, and you want to continue working while it executes, you can run the command in the background. When you add a & character to a command, the shell starts the command in the background and immediately prompts you for another:

% sort huge-in > huge-out &

You can apply & to a command sequence to run the entire sequence in the background. The following command serves as a crude reminder to go home in 10 minutes:

% (sleep 600 ; echo TIME TO LEAVE) &

sleep pauses for the specified number of seconds and terminates, so the command waits 10 minutes and then echoes TIME TO LEAVE to your terminal. Since it runs in the background, you can continue to work in the meantime.

You can run multiple commands simultaneously in the background:

% sort huge-in.1 > huge-out.1 &
% sort huge-in.2 > huge-out.2 &
% sort huge-in.3 > huge-out.3 &

However, running lots of background jobs can result in high system load and slow response. If yours is a multiple user system, running a large number of back-ground jobs could make other users unhappy, so be considerate and use moderation.

Get Using csh & tcsh now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.