Ooolo,
So, Here is what’s happened, I was doing some testing with driver for #top_secrete project. So each time to test my driver, I have to go through following steps,
- ssh to target platform (tab0), run
vim to edit code
- ssh to target platform (tab1), cd to source dir
- source environment
- build/install
- ssh to target (tab2), cd to log dir and start
ldmesg script to continuously monitor dmesg logs
- ssh to target (tab3), cd to test dir and start test (server)
- ssh to target (tab3), cd to test dir and start test (client).
aahh, lots of steps and if driver crashes during testing (and that's what happens most of the times), I have to repeat this whole process again. Above described (steps) stuff is mostly unproductive. So how to avoid it??
So here comes
tmux,
Tmux (terminal multiplexer) allows you to switch between multiple programs in single terminal. Its similar to
screen.
Getting started resources for tmux :
-
Part1
-
Part2
So if I login in to target system over SSH in one terminal and start
tmux, I can create multiple tabs inside single terminal using
tmux to run multiple programs. This solves partial problem i.e. multiple SSH logins, but sill I have to do lots of stuff manually after creating multiple tabs using
tmux. I needed further automation in the process...
After doing some googling I came across tool called
tmuxinator.
It does exactly what's needed.
Tmuxinator is awesome tool that allows you to configure
tmux session i.e. how many TTYs (tabs) to start with, executing some commands on start, splitting window, base/root directory for each tabs can be configured separately, cool right!
Getting started resources for tmuxinator:
-
Basics
So
tmuxinator automates most of the steps above, it launches
tmux, creates multiple tabs, source env, changes dir to specific directory and additionally we can maintain multiple project settings/profiles much easily and what it needs is simple configuration file.
Cheers!
(will update more soon!)