J'utilise beaucoup la commande "log" de screen pour consigner la sortie d'une session dans un fichier lorsque je modifie un environnement donné. J'ai cherché dans la page de manuel de tmux, mais je n'ai pas trouvé d'équivalent. Est-ce que quelqu'un est au courant d'une fonctionnalité similaire dans tmux ou dois-je écrire mes propres scripts de wrapper pour le faire?
EDIT: Je connais le 'script' et d'autres utilitaires qui me permettent de consigner une session. La fonctionnalité de screen est si utile est la possibilité de définir une variable de fichier journal qui utilise des échappements de chaîne pour identifier chaque session de manière unique.
Par exemple, j'ai une fonction shell qui, à partir d'un nom d'hôte, envoie SSH à cet hôte dans une nouvelle fenêtre et définit le titre de la fenêtre sur le nom d'hôte. Lorsque je commence un journal de cette session, il est préfixé par le titre de la fenêtre.
Si cette fonctionnalité n'existe pas dans tmux, je devrai créer un nouvel ensemble de fonctions shell pour configurer les "scripts" des sessions que je souhaite consigner. Ce n'est pas extrêmement difficile, mais cela ne vaut peut-être pas la peine, car l'écran fait exactement ce dont j'ai besoin.
la source
tmux pipe-pane …
commande dans votre commandedefault-command
(c'est-à-dire avant de démarrer un shell); bien sûr, cela ne fonctionnerait que pour les volets «par défaut» (rien n'a commencé avec des commandes explicites, par exemplenew-window sqlite3
). Il y a eu des allusions sur le fait que le support “hook” pourrait atterrir dans une version future de tmux ; cela peut vous permettre de configurer une commande (par exemplepipe-pane …
) à exécuter automatiquement après une autre commandenew-session
,new-window
ousplit-pane
).read
et l'date
arranger. Par exemplebind-key H pipe-pane -o 'exec bash -c "while IFS= read -r line; do echo \"\$(date +%%Y%%m%%dT%%H%%M%%SZ%%z): \$line\"; done" >>$HOME/"#W-tmux.log"'
date
chaque ligne de sortie va être un sérieux coup de performance! Mieux vautprintf '%(%Y%m%dT%H%M%S)T: %s\n' "$line"
(éviter autant que nécessaire d’être inclus dans un fichier de configuration tmux, donc sans doute doubler le%s
et échapper le"
s).Voici un plugin tmux qui permet de se connecter sans interférer avec les raccourcis clavier
.tmux.conf
:https://github.com/tmux-plugins/tmux-logging
Fonctionnalités:
prefix + P
bascule la journalisation du volet. La sortie est effacée des caractères ANSI indésirables!prefix + Alt + P
enregistre l'historique complet du volet dans un fichierla source
Après avoir parcouru la documentation de tmux, je ne trouve aucun équivalent de la journalisation de la fenêtre de l'écran. Il semble que vous deviez utiliser vos fonctions de shell pour faire ce que vous voulez, ou simplement utiliser screen. Vous pouvez activer le débogage, qui enregistre à la fois le serveur et le client, mais il inclut également de nombreux journaux superflus liés à tmux, ce qui ne correspond pas exactement à ce que vous demandez.
Vous pouvez éventuellement utiliser le presse-papiers de tmux pour automatiser l'enregistrement du tampon dans une autre session, qui serait configurée pour accepter le contenu du presse-papiers et être enregistrée dans un fichier. Cela semble un peu bidon.
la source
je le fais en utilisant un script, cela provient de mon fichier tmux.conf
la source
log
commande screen , qui permet de se connecter à la volée. Mais si vous êtes dans tmux et que vous voulez utiliser la journalisation de l'écran, vous devez quand même démarrer un nouveau shell.