`screen` is one of the most useful system tools I've ever used. It allows you to begin a process and then detach from the process to let it continue to run in the background. You can later re-attach to the screen to check progress, even from a remote location.
To install screen on a Debian-based system, you would do:
apt-get install screen
or for a RedHat-based system:
yum install screen
Some usage examples:
To start a job inside a screen, a Ruby script for example, you would issue a command something like this:
> screen my_script.rb
The job begins to run in exactly the same manner if you had not used a screen.
To detach from the screen you would use these keystrokes:
> Ctrl + a, Ctrl + d.
After this the Ruby script is still running.
To reconnect to the running screen you type:
> screen -dr
The 'd' means detach and the 'r' means re-attach to the current terminal.
If you have lots of screens running, you'll be prompted to specify which screen you want to re-attach to your terminal. For example:
> screen -dr
There are several suitable screens on:
5190.pts-0.pluto (03/18/2009 01:36:22 PM) (Detached)
5134.pts-0.pluto (03/18/2009 01:14:08 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
At this point you have to specify like this:
screen -dr 5190.pts-0.pluto
screen -dr 5134.pts-0.pluto
I find screen most useful for starting long-running jobs on remote servers. I can start the job, then log out and let it run without any worries of what my local system is doing. I can reboot or log off without any issues. Later I can re-attach the screen to my terminal to check progress as required. When the job is done, so is the screen, they are self-cleaning. :)
More info can be found here: