Tmux Quick-reference _TOP_
With tmux you can run long-running tasks in background session, without keeping terminal or SSH connection active. It also provides powerful set of features to efficiently distribute your terminal real estate across multiple programs. We created this item to provide you a quick reference to tmux shortcuts and commands.
Tmux quick-reference
That is where tools like tmux come in handy as it allows splitting a single window into several others. In other words, it enables you to simultaneously perform several tasks on the same screen.
tmux is a terminal multiplexer for Unix-based operating systems. Simply put, it acts as an add-on to an existing terminal. It allows users to create multiple windows and panes within the same terminal. This is especially useful if users want to run separate processes or commands and preview the output at the same time.
tmux is generally used to increase productivity by splitting a terminal window for each new task you have running. It is ideal for speeding up terminal tasks on your virtual private server (VPS), especially if you are a sysadmin who needs to handle several terminals simultaneously.
It is also possible to rename your sessions. Use tmux rename-session -t n session_name to do that. n is the session ID and session_name is your preferred session name.Note that the next time you attach this session, you will need to use the session name instead of its default ID.
It is also recommended to use bash as a shell instead of the default sh on the UG machines;it includes quality of life improvements such as reverse command search (control + r).While I cannot seem to change the default shell on the UG machines upon (SSH) logging in, you can instruct tmux to use bash for its windows by adding the following to /.tmux.conf.
I think the true power of tmux lies in its ability to create sessions. With sessions you can run a long running task, detach from the session and go about your business. tmux makes it easy to reconnect to the session.
When I'm coding, I like to have neovim window up and command line window down to run my code on the screen. When I save a neovim file and divide the screen into two horizontally using tmux, the neovim window rolls up automatically instead of staying still. This doesn't happen when using vim with tmux, so I thought some specific configuration in init.vim file that is used only for neovim was causing this behavior, but I couldn't find any configuration that leads to this. I even removed the init.vim file to see if that solves this, but neovim window still rolled up automatically when I divided the screen, which means some specific default configuration for neovim is causing this behavior. I'm using neovim version 0.4.3 with tmux version 3.1b.
We have three servers that are running python programs that are running data analysis tasks inside a tmux session. The method we are using at the moment is ssh'ing into each of them connecting the tmux session and watching the output on the command line.
While the other answers are smarter and wiser for the long term I think the quick hacky CLI solution is worth mentioning. Run tmux on one server that can reach all of the others. A good place for this would be a jump box or some other place that folks are commonly logged in anyway. Within this "central" tmux ssh to each box in a different pane and tail whatever log files are necessary. You can use ctrl-b " to get more panes in one tab within tmux. Now all someone has to do to check things is attach to the "central" tmux session and they can see the whole cluster at a glance.
A session is a single collection of pseudo terminals under the management of tmux. Each session has one or more windows linked to it. A window occupies the entire screen and may be split into rectangular panes, each of which is a separate pseudo terminal.
Whereas the fourth (third on mine, results may vary) link is a link to an issue on GitHub's repository of tmuxomatic, which proposes a feature intended to solve exactly the problem I have to cope with everyday: merge multiple tmux sessions into one.
This edit however, was for some reason rejected, on a basis of "deviating from original poster's intent". Which leads me to believe, that the people who reviewed the edit have never actually used tmux, and are also confusing the two concepts.