11

We can issue CTRL+Z to suspend any jobs in Unix and then later on bring them back to life using fg or bg. I want to understand what happens to those jobs that are suspended like this ? Are they killed/terminated ? In other words what is the difference between killing and suspending a process ?

Jeff Schaller
  • 66,199
  • 35
  • 114
  • 250
Geek
  • 6,548
  • 15
  • 46
  • 70
  • wikipedia article should be a good place to start http://en.wikipedia.org/wiki/Job_control_(Unix) – gelraen Jan 21 '13 at 18:00

3 Answers3

15

The jobs are not killed, they are suspended. They remain exactly as they are at the time of the suspension: same memory mapping, same open file, same threads, … It's just that the process sits there doing nothing until it's resumed. It's like when you pause a movie. A suspended process behaves exactly like a process that the scheduler stubbornly refuses to give CPU time to, except that the process state is recorded as suspended rather than running.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
8

From a user's perspective, it means that the job is paused. It will no longer use any CPU. It will, however, keep using the same amount of RAM. That is why you can bring it back to the foreground with fg and it will continue where it left off.

If you kill a job and then restart it, it will start over from scratch.

terdon
  • 234,489
  • 66
  • 447
  • 667
1

When suspend, the kernel doesn't include the process to the processor queue. When killed, the stack (memory) of the process is released.

derobert
  • 107,579
  • 20
  • 231
  • 279
Willian Paixao
  • 2,691
  • 3
  • 18
  • 33