¿Hay un equivalente tmux de "pantalla -D -R"

13

Me gustaría saber si hay una manera de tmuxcomportarse así, screen -D -Rasí que podría decir, tener el comando como comando predeterminado en Putty.

Estos screeninterruptores forzarían la desconexión de una sesión de pantalla existente para mi usuario (incluso si todavía estaba activa e iniciada sesión en otro lugar) y la volverían a conectar a la sesión actual. Además, en el caso de que no existiera una sesión de pantalla, se crearía una nueva.

Me gusta tmux y puedo ver claros beneficios en la pantalla, pero la existencia de esta característica realmente sellará el trato.

tmux attach no parece crear una nueva sesión si no hay una.

La página de manual de tmux dice:

Si no se inicia ningún servidor, attach-session (attach) intentará iniciarlo; esto fallará a menos que se creen sesiones en el archivo de configuración.

¿Qué significa la sección en negrita? (No puedo encontrar un ejemplo de creación de una sesión en el archivo conf).

Geeb
fuente
Desde la página del manual: " El archivo de configuración es un conjunto de tmuxcomandos que se ejecutan en secuencia cuando se inicia por primera vez el servidor. " - que en realidad podría tener attacho new-sessioncomo una línea en su .tmux.conf.
Sr_
@sr_ Bueno, la primera vez que new-sessionse inició el servidor habría sucedido de todos modos ...
Chris Down
Acabo de encontrar esta pregunta (cerrada) en SO. La misma pregunta con respuestas similares. stackoverflow.com/q/3432536/168034
phunehehe

Respuestas:

15

Si:

$ tmux attach -d || tmux new

-dEs necesario comportarse como screen -D, es decir, separar a todos los demás.

Conéctese por ssh, luego adjuntar o crear podría ser algo como:

$ cat bin/stmux
#!/bin/sh
exec ssh -t $@ 'tmux attach -d || tmux new'

$ stmux my.remote.box
mmoya
fuente
1
Sí, esta parece ser la forma más efectiva de lograr lo que solicité. Del mismo modo, desapruebo new-sessionel archivo de configuración en caso de que quiera editarlo y volver a cargarlo durante una sesión de tmux.
Geeb
4

Para tmux attachcrear una nueva sesión cuando no hay una, use la opción new-sessionen el archivo de configuración de tmux. Cree el archivo ~/.tmux.confsi no existe y agregue

new-session

lo. También, alias tmuxa tmux attach:)

phunehehe
fuente
1
Yo prefiero no tener new-sessionen ~/.tmux.confporque si vuelvo a cargar la configuración con el comando source-file ~/.tmux.conf(ver esta ) se pondrá en marcha una nueva sesión. Sí, puedo matarlo y luego adjuntarlo al anterior, pero eso es un poco molesto.
mmoya
3

Puede emular esto con una función de shell, esto debería funcionar para cualquier shell compatible con POSIX:

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

Ahora, si lo inicia como tmux -z, debe realizar las acciones que está buscando.

Chris Down
fuente
2

este funciona un poco mejor para mí:

tmux new-session -AD -s <session-name>
ZA
fuente
1

Creo que esto funciona mejor para mí en .bashrc

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi
usuario2451432
fuente
¿Cómo explica eso la sección en negrita en el OP?
Anthon
0

Si está utilizando esto dentro de un archivo .shrc o similar exec, le recomendaría

if tmux ls
  exec tmux attach
else
  exec tmux
fi
Aaron J Lang
fuente