Votre fichier de configuration fonctionne, mais il y a quelques complications.
Commandes de courte durée
Tout d'abord, les commandes que vous lancez (instances de ls ) finissent de s'exécuter très rapidement. Les fenêtres et volets des commandes sont créés, mais ils disparaissent dès que chaque commande se termine.
Si votre objectif est d'utiliser réellement de telles commandes «one shot» dans votre configuration éventuelle, vous devriez probablement utiliser l'option window remain-on-exit
(et éventuellement l'option session set-remain-on-exit
pour fournir une valeur par défaut pour toutes les fenêtres créées dans la session). Lorsque remain-on-exit
est défini pour une fenêtre, il ne disparaîtra pas à la fin de la commande. Vous voudrez probablement mapper le respawn-window
à une clé (note: respawn-window
réapparaîtra la commande d'origine; respawn-pane
est également disponible dans tmux 1.5 pour réapparaître des volets individuels).
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
Ou, si cela ne vous dérange pas que votre fenêtre initiale soit le numéro 1 au lieu du numéro 0, nous pouvons éviter de changer la valeur globale:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
Si vous utilisiez uniquement ls
une commande d'espace réservé simplifiée et que vous avez réellement l'intention de générer un certain type de commande interactive dans vos fenêtres / volets, alors vous devriez probablement générer la commande que vous aviez l'intention d'exécuter. Si votre commande destinée prend trop de temps pour le démarrage de l' utiliser pendant tmux test, puis remplacer une coquille ou une autre commande interactive simple (par exemple top
, sqlite3
etc.).
new-session
Est la commande par défaut
Deuxièmement, exécuter tmux sans argument de commande (par exemple tmux
) équivaut à utiliser la new-session
commande (c'est tmux
-à- dire la même chose que tmux new-session
). Votre .tmux.conf
crée une session pour ses fenêtres / volets ( new
est un alias pour new-session
) et une autre session est créée pour la new-session
commande implicite spécifiée en démarrant tmux sans argument de commande. Si vous utilisez la barre d'état par défaut, vous verrez un [1]
dans le côté gauche de la barre d'état lorsque vous êtes dans la session «supplémentaire» (la session initiale créée dans le .tmux.conf
numéro est 0).
Si vous voulez éviter de créer la session supplémentaire, utilisez tmux attach
plutôt que plain tmux
. Les commandes de votre .tmux.conf
seront exécutées, créant la session 0, puis votre client s'attachera à cette session au lieu d'en créer une nouvelle.
splitw
ça - rien d'autre - et je n'ai toujours pas d'écran partagé parce qu'il le dit impossible d'établir la session en cours. Si j'ajoutenew
avant, j'obtiens ... une fenêtre, un volet. Je ne peux pas sembler, pour la vie de moi, obtenir deux volets au démarrage.new
, puissplitw
fonctionne pour moi lorsque je démarre tmux viatmux attach
. Une chose à retenir est que le.tmux.conf
(ou le fichier spécifié avec l'-f
option) n'est utilisé que si aucun serveur n'est déjà en cours d'exécution. Vérifiez si un serveur fonctionne viatmux ls
. Si vous souhaitez exécuter les commandes à partir d'un fichier lorsqu'un serveur est déjà en cours d'exécution, faites-le comme ceci:tmux source-file /path/to/conf-file-that-creates-a-session-and-windows \; attach
(si vous l'exécutez en l'absence de serveur, votre.tmux.conf
(ou le-f
fichier) s'exécutera en premier, puis votresource-file
fichier).tmux new -f myconfig
. Le contenu de ce fichier de configuration contient uniquementnew
suivi desplitw
. Je tue tous les processus tmux avant d'essayer la ligne de commandetmux -f myconfig
. Je n'ai pas deux volets. Je ne sais vraiment pas quoi faire après ce point (à part abandonner simplement tmux).-f
ou non,tmux
sans argument de commande, c'est la même chose quetmux new-session
(qui, pour les nouveaux serveurs, créera une nouvelle session en plus de ce que fait votre fichier de configuration). Votre fenêtre de prédécoupage est créée dans la session 0, mais lanew-session
commande implicite crée (et attache à) une session supplémentaire (session 1; recherchez la[1]
dans votre ligne d'état). Utiliseztmux -f myconfig attach
pour éviter de créer la nouvelle session qui cache votre fenêtre pré-scindée.Je ne suis pas sûr de comprendre ce que vous entendez par "entrer manuellement", mais c'est ainsi que je le fais. J'ai écrit un script "autostart" que mon gestionnaire de fenêtres lance. Il contient:
où chaque fichier .session ressemble à ceci:
Attendez, il y a plus! J'ai un nombre toujours croissant de fichiers .session que je charge avec konsole:
où work_console.tabs ressemble à ceci:
Ensuite, j'appuie sur F12 pour lancer konsole.
la source
supposons que vous vouliez lancer 3 tâches de surveillance du serveur (ici ping localhost), il n'est pas nécessaire de jouer avec les fichiers de configuration et les sessions enregistrées. Tout cela peut être fait à partir de la ligne de commande.
la source
J'ai trouvé teamocil très utile pour automatiser les fenêtres / sessions tmux.
Son écrit en Ruby vous avez donc besoin que installé.
Voici un exemple de configuration:
Vous pouvez avoir un arrangement de fenêtres et de séparations.
la source
Une autre alternative similaire à teamcoil est tmuxinator , elle est en développement actif et fonctionne assez bien. Il est également recommandé (et le type de revue) sur l'incroyable tmux: productive souris sans développement de la Bibliothèque Pragmatique .
la source
**
Mieux vaut sauvegarder votre session!
** J'ai trouvé que pour un administrateur paresseux comme moi, je préfère enregistrer la session de tmux, plutôt que de passer des heures à essayer de le construire parfaitement. J'administre plus de 30 serveurs et mes sessions tmux sont dynamiques, la configuration changeant tout le temps. C'était une douleur dans le cou, jusqu'à ce que je découvre récemment que tmux-resurrect ce plugin est tout simplement génial. Essaie. Actuellement, les référentiels Ubuntu ont tmux 1.8, ce plugin a besoin de 1.9, vous devez donc mettre à niveau manuellement
Après quoi, vous pouvez l'installer en
Ensuite, ajoutez cette ligne au bas de ~ / .tmux.conf (si ~ / .tmux.conf n'est pas disponible, créez un fichier vide)
J'ajoute également cette ligne à la fin du ~ / .tmux.conf pour que le plugin enregistre les sessions pour tous les programmes que j'exécute
Rechargez ensuite l'environnement tmux.
C'est ça! Vous avez terminé. Maintenant, lancez tmux comme d'habitude, redimensionnez vos volets, créez de nouveaux volets, créez de nouvelles sessions ... etc. Lorsque vous êtes satisfait de la configuration que vous avez atteinte (dans plusieurs fenêtres et plusieurs sessions), cliquez simplement sur ctrl + b puis sur ctrl + s pour enregistrer la session. Afin de tester les résultats, il suffit de tuer tous les tmux
Ensuite, exécutez à nouveau tmux
Ensuite, depuis tmux, cliquez sur ctrl + b puis sur ctrl + r (pour la restauration). Magiquement, toutes vos fenêtres, volets et sessions sont restaurés avec la même géométrie et la même disposition. J'espère que cela vous aidera.
la source