J'essaie de comprendre comment attacher à une tmux session
session tmux nommée, sinon je veux en créer une nouvelle avec le nom donné.
Actuellement, je connais quelques tmux
commandes qui peuvent en partie atteindre ce que je recherche, mais il n'est pas clair comment les combiner pour obtenir ce que je recherche:
tmux attach
s'attache à une session existante automatiquement - mais les erreurs se produisent si aucune session n'existetmux new
crée une nouvelle session - mais elle le fait à chaque fois, je ne peux donc pas la laisser dans mon.tmux.conf
tmux has-session
teste si une session existe - mais je ne sais pas comment l'assembler avec les autres commandes
Ainsi, je voudrais créer un script tmux, de sorte que cela se produise automatiquement, au lieu d'avoir à le créer manuellement à chaque fois que j'ai besoin de me connecter à une session.
Comment puis-je écrire un script automatique pour créer une nouvelle session tmux (si un nom de session donné n'existe pas) ou l'attacher à un nom de session (s'il existe)?
man tmux
dit: "Le drapeau -A fait que la nouvelle session se comporte comme attach-session si le nom de session existe déjà"Réponses:
Vous pouvez également ajouter
à ton
.tmux.conf
- cela créera une session par défaut au démarrage du serveur.Ensuite
tmux attach
, soit s'attacher à la session en cours (serveur en cours d'exécution, c'est-à-dire), soit créer une nouvelle session (démarrer le serveur, lire le fichier de configuration, émettre lanew-session
commande) et s'y attacher.la source
new-session
détruit cela, cela semble être un réel problème.source-file ~/.tmux.conf
)-A
optionnew-session
si vous nommez votre session.new-session -A -s mysession
jouera bien avec le rechargement de la configuration.Je l'ai compris ( et je l'ai fait remarquer ).
la source
tmux attach-session -t my-session || tmux new-session -s my-session
. Le seul problème est que ce n'est pas atomique. tmux devrait vraiment avoir une commande create-or-attach.alias tm='tmux attach || tmux new'
tmux attach -t some_name || tmux new -s some_name
. Remplacez some_name par $ 1, ajoutez un shebang et enregistrez.new
vsnew-session
: ce sont des synonymes, tout commeattach
etattach-session
.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t default
fonctionne beaucoup mieux et n'ouvre pas un deuxième tmux au cas où vous auriez/bin/kill
le premier. Le seul inconvénient est que vous devez nommer les sessions pour cela.Comme indiqué dans les commentaires de Petr Viktorin , jkoelker et pjincz , vous pouvez utiliser la commande suivante pour vous attacher à
mySession
s'il existe et pour le créer si ce n'est pas le cas:De
man tmux
:new-session
prend en charge-A
depuis tmux-1.8 .la source
gnome-terminal
la commande, je vous suggère de laisser le-s
et le nom de session spécifique afin de ne pas vous retrouver avec CHAQUE nouvellegnome-terminal
session attachée à la même session. Vous pouvez toujours sélectionner une session existante avecprefix + s
après l'ouverture d'un nouveau terminal.Bien que je trouve que la réponse de rampion est suffisante pour utiliser 1 session, ce script vous permet de configurer plusieurs sessions:
REMARQUE:
la source
En adaptant la suggestion d'Alex pour inclure la configuration basée sur le projet au démarrage, j'ai commencé à utiliser ce qui suit:
où
tmux-myproject.conf
est ma série de démarrage de commandes tmux pour créer mes fenêtres et mes volets, ainsi que démarrer mes éditeurs.la source
J'utilise un alias pour créer une nouvelle session si nécessaire, et je m'attache à ma session par défaut si elle existe déjà:
J'ai ajouté ceci à mon .login sur mon serveur.
La raison pour laquelle je le fais de cette façon est que je ne veux pas m'attacher à la même session réelle, je veux une nouvelle session qui utilise le même groupe de fenêtres.
Ceci est également similaire à la course
screen -xRR
.la source
tmux list-sessions
.tmux new -A -s default
pour lancer une nouvelle session si elle n'existe pas ou attacher automatiquement. Je pense que c'est bien mieux que d'éditer un fichier de configuration.Pour ceux qui veulent faire la même chose en
fish
:la source