Appending an & (ampersand) to any command run within bash will
background the process.
for count in $(seq 1 10); do
sleep 10m &
done
[1] 17
[2] 18
[3] 19
[4] 20
[5] 21
[6] 22
[7] 23
[8] 24
[9] 25
[10] 26
Will background 10 processes which will simply sleep for 10 minutes. Bash will return a table of job ids and their PIDs.
To list a table which shows all background processes use the built-injobs
command.
$ jobs -l
You can also use ps to list the background processes by requesting the
processes which have the parent pid of your current bash shell.
$ ps -O user --ppid $$
By using ps we can refer to important information on the processes.
To connect to one of the background processes, use fg and the job id
number.
fg 5
To put job 5 back into the background you first have to suspend the
process by using ^Z (Control-Z) and then running bg specifying the job
id.
$ fg 5
sleep 10m
^Z
[11]+ Stopped sleep 10m
$ bg 5
[11]+ sleep 10m &
To put fg, bg and ^Z to practical use, lets say you were copying a large
directory which was going to take a long time though you wanted to
regain control of your current shell.
Suspend the current command using ^Z.
$ cp -a /opt/backups/files/hourly.0 /opt/restore
^Z
[1]+ Stopped cp -a /opt/backups/files/hourly.0 /opt/restore
Background the task with bg referring to the job id in the table.
$ bg 5
[1]+ cp -a /opt/backups/files/hourly.0 /opt/restore &
Confirm the process is running with ps.
$ ps -O user --ppid $$
PID USER S TTY TIME COMMAND
45 mertcan D tty1 00:00:16 cp -a /opt/backups/files/hourly.0 /opt/restore