Bash

Job Control

Syntax#

  • long_cmd &
  • jobs
  • fg %JOB_ID
  • fg %?PATTERN
  • fg %JOB_ID

Run command in background

$ sleep 500 &
[1] 7582

Puts the sleep command in background. 7582 is the process id of the background process.

List background processes

$ jobs
[1]   Running                 sleep 500 &  (wd: ~)
[2]-  Running                 sleep 600 &  (wd: ~)
[3]+  Running                 ./Fritzing &

First field shows the job ids. The + and - sign that follows the job id for two jobs denote the default job and next candidate default job when the current default job ends respectively. The default job is used when the fg or bg commands are used without any argument.

Second field gives the status of the job. Third field is the command used to start the process.

The last field (wd: ~) says that the sleep commands were started from the working directory ~ (Home).

Bring a background process to the foreground

$ fg %2
sleep 600

%2 specifies job no. 2. If fg is used without any arguments if brings the last process put in background to the foreground.

$ fg %?sle
sleep 500

?sle refers to the baground process command containing “sle”. If multiple background commands contain the string, it will produce an error.

Stop a foreground process

Press Ctrl + Z to stop a foreground process and put it in background

$ sleep 600
^Z
[8]+  Stopped                 sleep 600

Restart stopped background process

$ bg
[8]+ sleep 600 &

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow