78

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

5 Answers 5

92

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.

7
  • 5
    To prevent killing the child process after the terminal is closed you can start your app as nohup firefox&.
    – ccpizza
    Commented Dec 3, 2012 at 22:25
  • Cool! I didn't know that (but upon experimentation, the terminal is still "blocked")! Commented Dec 3, 2012 at 23:35
  • it is not 'blocked', it only 'looks' blocked, if you type enter once you will get a prompt.
    – ccpizza
    Commented Dec 4, 2012 at 21:07
  • 4
    program-name & disown is a nice solution Commented Aug 3, 2019 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. Commented May 28, 2020 at 20:25
10

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

2
  • 1
    Cool. It must keep process running when user logout and current session closed. Commented Mar 7, 2019 at 15:40
  • Hey can you also let us know how to stop the process if need to be stop Commented May 2 at 7:12
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
    Commented Jul 6, 2018 at 1:20
2

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/

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/

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .