I really don't know what are the advantages of running applications in the background.
Application & via command line.
Why exactly do we run applications in background and when should I decide to do so?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
Generally applications that take too long to execute and dosent require user interaction are sent to background so that we can continue our work in terminal.
Jobs running in background are treated same as jobs running in foreground except that their STDOUT, STDIN and STDERR varry.
If you have a job that take too long, like file compression or backup you can send those jobs to background.
You can list the jobs that are running in background using
$ ./job1.sh &  9747 $ ./job2.sh &  9749 $ ./job3.sh &  9751 $ jobs  Running ./job1.sh & - Running ./job2.sh & + Running ./job3.sh &
Here whenever a job is sent to background shell displays the
job id and
pid of the process. Incase if we want the process to get back to foreground we can use
fg command to bring it back.
$ fg 1 ./job1.sh
But be aware that when you close the terminal (shell) SIGHUP will be sent to all background process that are spawned from the shell causing those processes to die. To prevent this you can use
disown command to remove those process from the job table and thus preventing the process from getting killed.
one best way is to start the background process with
nohup command so that SIGHUP signals will not kill the process and it will run safe in background.
Preventing SIGHUP to be sent to child processes (bg jobs) can also be prevented by setting
huponexit option of the bash shell.
$ shopt -s huponexit
This option is set by default in latest versions of Bash, but incase if its not set, we can add this to
~/.bashrc to make it a default behaviour.
If you execute an application that needs - let's say 5 minutes to end, for example a copy job - the shell is blocked while the program is running, the whole 5 minutes. The copy job is then in the so called foreground process group, indicated by a
+ sign in
ps. You may need to do some other work during that 5 minutes, but the shell is blocked.
On the other hand, when you execute the copy job in the background (
cp source target &) you job executes in the background without blocking the current shell. You can continue with other things. You can bring the process back to foreground with
fg if you wish.