67

I run a lot of programs in Ubuntu from the terminal, but I would like to be able to continue using the terminal after I have a program open. How can I put the programs in the background so that I don't have to open another window?

0
79

There are different ways to run a terminal program and continue using the terminal:

  • You can open another terminal tab (right-click, then select "Open New Tab").
  • You can append & to the command you run. Be aware that you will not see text output to the terminal, such as error messages.
  • You can type Ctrl-Z and then run bg. This has the same effect as running command &
  • You can run nohup command & and then press enter. (Thanks to ccpizza, see comments below.)

However, pressing Alt-F2 and then running your command from the GUI is usually considered best practice - there is no terminal at all!

Note that when using & (not nohup), closing the terminal will still terminate the application unless you run disown afterwards.

EDIT: It looks like using nohup will sometimes leave little droppings in your home folder. What would normally have been logged to the terminal is apparently saved to a file in ~/.

~~

A simple way to run a program in the background is program-name & disown, which will drop you to a terminal which can be closed without killing the process.

6
  • 5
    To prevent killing the child process after the terminal is closed you can start your app as nohup firefox&. – ccpizza Dec 3 '12 at 22:25
  • Cool! I didn't know that (but upon experimentation, the terminal is still "blocked")! – WindowsEscapist Dec 3 '12 at 23:35
  • it is not 'blocked', it only 'looks' blocked, if you type enter once you will get a prompt. – ccpizza Dec 4 '12 at 21:07
  • 4
    program-name & disown is a nice solution – Doctor Henry Aug 3 '19 at 12:34
  • 1
    nohup <command> & works perfectly, especially for remote servers where you may disconnect but want the command to keep running forever, or until it finishes. – Joshua Pinter May 28 '20 at 20:25
8

You can run the command with a & after.

For example:

thunderbird &

See Here for more info.

1
  • 2
    This works only until you close the terminal window, once you close the window the program will terminate – kurdtpage Jul 6 '18 at 1:20
8

You can use setsid to run program in a new session with addition to &>/dev/null so you will not receive any log messages.

So it would be like

setsid program-name &>/dev/null

1
  • Cool. It must keep process running when user logout and current session closed. – Mikhail Moskalev Mar 7 '19 at 15:40
2

Using screen command, you can open multiple terminal sessions using a single window

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (start new screen)

[Your command]

Ctrl+A d to leave screen ... and so on

https://linuxize.com/post/how-to-use-linux-screen/

1

You can run it in a virtual terminal like tmux (or screen but I heard it's not maintained anymore)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux can do a lot more, like :

  • move your virtual terminal to another terminal
  • share the virtual terminal in several terminals (other users can see what your doing ;-) )
  • split the "screen" to have several terminals.
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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