307

How can I resume a stopped job in Linux? I was using emacs and accidentally hit ctrl-z which blasted me back to the console. I can see it when I type 'jobs'

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

migrated from stackoverflow.com Apr 8 '11 at 10:42

This question came from our site for professional and enthusiast programmers.

  • This is actually a fairly normal work flow for Vim, if you want to keep you commands in your bash history, then you hit Ctrl-z type your commands and then resume. Obviously you can run commands without leaving Vim via the :! ed command – icc97 Jul 11 '18 at 2:32
343

The command fg is what you want to use. You can also give it a job number if there are more than one stopped jobs.

  • 50
    for reference, fg is "foreground". You can also continue the job in the background with "bg". – Sirex Apr 8 '11 at 11:05
236

The general job control commands in Linux are:

  • jobs - list the current jobs
  • fg - resume the job that's next in the queue
  • fg %[number] - resume job [number]
  • bg - Push the next job in the queue into the background
  • bg %[number] - Push the job [number] into the background
  • kill %[number] - Kill the job numbered [number]
  • kill -[signal] %[number] - Send the signal [signal] to job number [number]
  • disown %[number] - disown the process(no more terminal will be owner), so command will be alive even after closing the terminal.

That's pretty much all of them. Note the % infront of the job number in the commands - this is what tells kill you're talking about jobs and not processes.

  • 27
    I avoid "kill %1" because mistyping it as "kill 1" is really really bad :) – barrycarter Apr 8 '11 at 14:05
  • 5
    @barrycarter That's very true. I usually do an fg and a Ctrl-C ;) – Majenko Apr 8 '11 at 14:08
  • 5
    @barry: Which is why init in Upstart ignores SIG{TERM,KILL} by default. – Hello71 Apr 19 '11 at 2:26
  • 5
    And, of course, "never run as root" ;) – barrycarter Apr 19 '11 at 3:04
45

You can also type %<process_name>; i.e., you hit Ctrl-Z in emacs, then you can type %emacs in the console and bring it back to the foreground.

  • Very good to know – ZAD-Man Oct 22 '15 at 21:42
29

Just to add to the other answers, bash lets you skip the fg if you specify a job number.

For example, these are equivalent and resume the latest job:

%
%%
fg
fg %

These resume job #4:

%4
fg 4
  • 2
    While this is kind of cool, I still find it easier to type fg than %. – rr- Oct 10 '14 at 17:10
  • 3
    % is awesome, thanks! As a touch-typist, I find fg very irritating (same finger). But then, so is cd. – Gauthier Apr 15 '15 at 13:45
  • And you can start it in the background with either bg % or just % &. – Wildcard Aug 16 '16 at 18:43
16

If you didn't launch it from current terminal, use ps aux | grep <process name> to find the process number (pid), then resume it with:

kill -SIGCONT <pid>
  • 2
    This also works if you disown a stopped process – mabraham Dec 6 '17 at 1:21
  • can you also get access to its input/output as it happens when you say fg ? – Ciprian Tomoiagă Oct 2 '18 at 9:39

protected by Community Jan 5 at 13:58

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.