DEV Community

Maroun Maroun
Maroun Maroun

Posted on

Job Control Commands in Linux

Job is simply a process. In Linux, each job is associated with PID.

There are three types of jobs:

Foreground Jobs

When you run vi <file>, the vi program "occupies" the terminal window, and the process runs in the foreground.

When you exit the program, the application is no longer running, and the process dies.

Background Jobs

Processes that are running without occupying the window. This can be achieved, for example, by appending & at the end of the command. For example, when you run:

tar -czf file.tar.gz .

the tar process will block the terminal until it finishes. However, when you run:

tar -czf file.tar.gz . &

then it'll run in the background. And if you type jobs while it's still running:

jobs
[1]+  Running                 tar -czf file.tar.gz . &

Stopped Jobs

CTRL + z sends the SIGTSTP signal that stops the job that's runnin in the foreground.

Job Control Commands

  • jobs - lists all jobs
  • bg [PID...] - takes the specified job(s) to the background, resuming them if they are stopped.
  • fg [PID] - brings the specified job to the foreground, resuming it if it is stopped
  • CTRL + z - Sends the SIGTSTP signal that stops the running job

The following should demonstrate the commands above:

> tar -czf file.tar.gz .
# ...working...
# CTRL + z
Job 1, 'tar -czf file.tar.gz .' has stopped
> jobs
[1]+  Running                 tar -czf file.tar.gz . &
> fg %1 (or just "fg" since there's only one job)
# job restarts

That's all :)

Top comments (0)