Estoy tratando de descubrir cómo adjuntarme a una tmux session
sesión si existe una tmux con nombre, si no, quiero crear una nueva con el nombre dado.
Actualmente, conozco algunos tmux
comandos que pueden lograr en parte lo que estoy buscando, pero no está claro cómo combinarlos para obtener lo que estoy buscando:
tmux attach
se adjunta a una sesión existente automáticamente, pero se elimina el error si no existetmux new
crea una nueva sesión, pero siempre lo hace, así que no puedo dejarla en mi.tmux.conf
tmux has-session
prueba si existe una sesión, pero no sé cómo unirla con los otros comandos
Por lo tanto, me gustaría crear un script tmux, para que esto suceda automáticamente, en lugar de tener que crearlo manualmente cada vez que necesite iniciar sesión en una sesión.
¿Cómo puedo escribir un script automático para crear una nueva sesión de tmux (si no existe un nombre de sesión dado) o adjuntarlo a un nombre de sesión (si existe)?
man tmux
dice: "La bandera -A hace que la nueva sesión se comporte como adjuntar sesión si el nombre de la sesión ya existe"Respuestas:
Alternativamente, puedes agregar
a su
.tmux.conf
- eso creará una sesión predeterminada en el inicio del servidor.Luego
tmux attach
se adjuntará a la sesión actual (es decir, el servidor en ejecución) o creará una nueva sesión (iniciará el servidor, leerá el archivo de configuración, emitirá elnew-session
comando) y se adjuntará a eso.fuente
new-session
destruye, entonces parece ser un problema real.source-file ~/.tmux.conf
)-A
opciónnew-session
si nombra su sesión.new-session -A -s mysession
jugará bien con la recarga de configuración.Lo descubrí ( y me lo señaló ).
fuente
tmux attach-session -t my-session || tmux new-session -s my-session
. El único problema es que esto no es atómico. tmux realmente debería tener un comando de crear o adjuntar.alias tm='tmux attach || tmux new'
tmux attach -t some_name || tmux new -s some_name
. Cambie some_name a $ 1, agregue un shebang y guarde.new
vsnew-session
: son sinónimos, y también lo sonattach
yattach-session
.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t default
funciona mucho mejor y no abre un segundo tmux en caso de que sea/bin/kill
el primero. El único inconveniente es que debe nombrar las sesiones para esto.Como se señaló en los comentarios de Petr Viktorin , jkoelker y pjincz , puede usar el siguiente comando para adjuntarlo
mySession
si existe y para crearlo si no existe:De
man tmux
:new-session
ha soportado-A
desde tmux-1.8 .fuente
gnome-terminal
como el comando, le sugiero que omita el-s
nombre de sesión y el nombre de sesión específico para que no termine con CADAgnome-terminal
sesión nueva adjunta a la misma sesión. Siempre puede seleccionar una sesión existenteprefix + s
después de abrir una nueva terminal.Aunque considero que la respuesta de rampion es suficiente para usar 1 sesión, este script le permite configurar varias sesiones:
NOTA:
fuente
Adaptando la sugerencia de Alex de incluir una configuración basada en proyectos al inicio, comencé a usar lo siguiente:
¿Dónde
tmux-myproject.conf
está mi serie de comandos tmux de inicio para crear mis ventanas y paneles, así como para iniciar mis editores?fuente
Utilizo un alias para crear una nueva sesión si es necesario, y adjunto a mi sesión predeterminada si ya existe:
Agregué esto a mi .login en mi servidor.
La razón por la que lo hago de esta manera es porque no quiero adjuntarme a la misma sesión real, quiero una nueva sesión que use el mismo grupo de ventanas.
Esto también es similar a correr
screen -xRR
.fuente
tmux list-sessions
.tmux new -A -s default
para iniciar una nueva sesión si no existe o adjuntarla automáticamente. Creo que es mucho mejor que editar el archivo de configuración.Para aquellos que quieren hacer lo mismo en
fish
:fuente