158 votes

Créer session s’il n’existe

Je suis passer de l'aide d' gnu-screen de tmux, et je suis encore à essayer d'envelopper ma tête autour de changements.

Une chose que je voudrais être en mesure de faire est de commencer tmux et qu'automatiquement vous connecter à une session si celle-ci existe, sinon de créer une nouvelle session.

  • tmux attach s'attache à un automatiquement session existante - mais des erreurs si aucune session n'existe
  • tmux new crée une nouvelle session - mais il le fait à chaque fois, donc je ne peux pas le laisser dans mon .tmux.conf
  • tmux has-session teste si une session existe - mais je ne sais pas comment faire pour les coudre ensemble avec les autres commandes

Quelqu'un peut-il me donner un fichier de configuration de conseils?

173voto

rampion Points 38697

J’ai pensé à elle (et avait il m’a fait remarquer).

92voto

Leonid Shevtsov Points 5728

Alternativement, vous pouvez ajouter

à votre `` -ce qui crée une session par défaut au démarrage du serveur.

Puis se joindre à la session en cours (qui exécute server, c'est-à-dire), ou créer une nouvelle session (démarrer le serveur, lire le fichier de configuration question la commande) et joindre à cela.

15voto

Anm Points 1689

L'adaptation de Alex de la proposition d'inclure le projet en fonction de la configuration au démarrage, j'ai commencé à utiliser les éléments suivants:

# ~/bin/tmux-myproject shell script
# The Project name is also used as a session name (usually shorter)
PROJECT_NAME="myproject"
PROJECT_DIR="~/myproject"

tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ "$?" -eq 1 ] ; then
    echo "No Session found.  Creating and configuring."
    pushd $PROJECT_DIR
    tmux new-session -d -s $PROJECT_NAME
    tmux source-file ~/bin/tmux-${PROJECT_NAME}.conf
    popd
else
    echo "Session found.  Connecting."
fi
tmux attach-session -t $PROJECT_NAME

tmux-myproject.conf est mon démarrage de la série de commandes tmux pour créer mes fenêtres et des volets, ainsi que le début de mes éditeurs.

14voto

Alex Gaudio Points 774

Bien que je trouve rampion réponse est suffisante pour l'utilisation de la 1 session, ce script vous permet de configurer plusieurs séances:

SESSIONS="work play"

function has-session {
    tmux has-session -t $1 2>/dev/null
}

function except 
{
    if [ "$?" -eq 1 ] ; then
        $1
    fi
}

# Configure your sessions here
function session-work
{
    tmux new-session -d -s work
    tmux neww -k -t work:1
}

function session-play
{
    tmux new-session -d -s play
    tmux neww -k -t play:1
}

#
#MAIN 
for x in $SESSIONS
do
    echo $x
    has-session $x
    except session-$x
done

NOTE:

-k  --> new-window will not be created if already exists
-d  --> start session or window, but don't attach to it yet
-s  --> name the session
-t  --> specify a target location in the form session:window.pane 

9voto

Michael Points 336

Je utiliser un alias pour créer une nouvelle session si nécessaire, et de joindre à ma session par défaut si elle existe déjà:

alias tmuxre='tmux nouvelle-session -t par défaut || tmux nouvelle-session -s par défaut

Je lance ce dans mon .connexion sur mon serveur.

La raison pour laquelle je le fais de cette façon c'est parce que je ne veux pas fixer de la même session, je veux une nouvelle session qui utilise le même groupe de fenêtres.

C'est également similaire à l'exécution d'écran "- xRR".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X