Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

tmux and screen let you run different processes (e.g. vim, a bash script, mysql, psql, etc) in different virtual windows. But traditional Unix job control (using CTRL-z, fg, bg, and jobs) seem to give you some of the same functionality.

Are there any advantages of multitasking using traditional job control over the newer ways via tmux and screen?

share|improve this question
If you are asking, "Do I have to learn this too?" the answer is defiantly yes. Just because a VW bug has four rubber wheels just like a Hummer or Ferrari doesn't mean it will get you there in style or with speed, or even make it at all as the case may be. Screen is kind of the stand by in the game but tmux would be the one to learn if you are just getting started. – Caleb May 26 '11 at 20:16
Good advice. I have been using tmux for a few months, after using Gnu screen for a year. But there are weird issues like freezes and hangs, and abnormal behavior when trying to open a pdf browser from the command line, etc. – dan May 26 '11 at 22:51
up vote 3 down vote accepted

Suppose you've just started a program outside screen. Suddenly you realize you wanted to do something else in that terminal. Ctrl+Z.

Screen and tmux introduce a layer of isolation between the application and the terminal. This isn't always a good thing. For example, I find their scrollback a lot less convenient than xterm's, so I rarely use screen unless I intend to (be able to) connect to that session remotely.

If you've set up environment variables, a current directory and other parameters in a shell (which may be in a screen window), carrying those settings over to a new screen window can be a lot of work. It's convenient to be able to run several programs in that terminal.

Sometimes you want to run a program in the background and have nothing to to with it any more: nohup program & disown %-.

If you have a GUI application that occasionally misbehaves, it can be convenient to start it from a terminal and fg; Ctrl+C or kill %1 it if needed.

Screen and tmux may not be installed.

share|improve this answer
BTW, Zsh has a great feature to make this nohop/disown combo shorter: program &! – Adam Byrtek May 26 '11 at 22:12

Ease of use would be the primary reason. It's much more convenient to switch between screens using keyboard shortcuts than to use the job control features. Moreover, with Screen every window is connected to a separate virtual terminal, while with job control you either have to suspend the process, or allow it to run in the background cluttering the only terminal.

Last but not least, the traditional job control doesn't allow you to reattach to an existing session nor share it with others.

share|improve this answer
Looks like you read the question the wrong way round. – Gilles May 26 '11 at 21:28

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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