Comment connaître la version actuelle de tmux?

138

Je sais que je peux courir tmux -Vpour trouver la version de tmuxqui est dans mon PATH, mais comment puis-je obtenir la version de tmuxqui est actuellement en cours d'exécution ?

quant
la source
124
Chers Googleurs: tmux -V
Mateen Ulhaq

Réponses:

89

La manière la plus évidente, mais pas correcte à 100%, consiste à exécuter cette commande dans la console

$ tmux -V

et recevez une sortie comme celle-ci tmux 2.9aavec la version de tmux INSTALLED, qui n'est pas en cours d'exécution. Dans 99% des cas, cela suffit, mais il peut y avoir des nuances subtiles.

La commande tmux -V retournera la version de tmux installée dans / usr / bin / tmux ou tout autre répertoire dans votre variable PATH. Si vous avez déjà tmux en cours d'exécution, il est possible que tmux puisse être démarré à partir d'un binaire d'une autre version et d'un endroit différent (par exemple, tmux peut être démarré à partir de /home/user/bin/tmux). Dans ce cas, vous devez appeler

$ ps  -e | grep tmux

pour voir le PID de tous les processus tmux en cours d'exécution. Il produira quelque chose comme ça

[vodolaz095@ivory ~]$ ps -e | grep tmux
19699 pts/0    00:00:00 tmux: client
19701 ?        00:00:00 tmux: server

Ici, le numéro 19701 représente l'ID de processus (PID) du serveur tmux en cours d'exécution.

Après avoir obtenu le PID du serveur tmux, vous pouvez exécuter la commande


$ lsof -p 19701

pour obtenir des informations sur le processus du serveur tmux EN COURS D'EXÉCUTION (dans mon cas, c'est 19701) qui produira quelque chose comme ça (Figure 1)

COMMAND     PID       USER   FD   TYPE             DEVICE  SIZE/OFF     NODE NAME
tmux:\x20 19701 vodolaz095  cwd    DIR               8,33      4096 22544385 /home/vodolaz095
tmux:\x20 19701 vodolaz095  rtd    DIR                8,1      4096        2 /
tmux:\x20 19701 vodolaz095  txt    REG                8,1    677760  3675332 /usr/bin/tmux
tmux:\x20 19701 vodolaz095  mem    REG                8,1   6406312   131327 /var/lib/sss/mc/group

comme vous pouvez le voir, tmux en cours d'exécution a été exécuté à partir du binaire placé dans / usr / bin / tmux.

Ou, vous pouvez appeler une doublure


    lsof -p `pgrep 'tmux: server'`

pour obtenir le même résultat que la figure 1

Après avoir obtenu le chemin vers le binaire tmux EN COURS D'EXÉCUTION, (dans mon cas, c'était le cas /usr/bin/tmux), vous pouvez exécuter ce binaire avec l'indicateur -V pour obtenir sa version


/usr/bin/tmux -V

ou, si tmux a été installé par un utilisateur limité dans /home/user/bin/tmux,


/home/user/bin/tmux -V

Et, par conséquent, vous obtiendrez la version de tmux en cours d'exécution, pas celle qui a été installée.

vodolaz095
la source
7
Il convient de mentionner que cela ne fonctionnera pas si tmuxa été mis à niveau depuis le démarrage du processus donné.
personne
3
Dans MacOsX, j'ai une erreurps: option requires an argument -- u
alexserver
55
juste exécuter tmux -V, testé sur Ubuntu et OSX
Mauricio Poppe
1
cette méthode vous demandera d'exécuter d'abord tmux; à la place, vous pouvez utiliser which tmuxpour trouver le chemin
Shiva
1
@Shiva - l'auteur de la question a dit "la version de tmux en cours d'exécution?" - donc tmux fonctionne déjà
vodolaz095
148

Comme indiqué dans un commentaire, tmux -Vrenvoie la version:

$ tmux -V
# tmux 1.8

Testé sur Centos 7 et OSX 10.11.5.

soixante4bit
la source
2
Cela devrait être la réponse choisie. Également testé sur Amazon Linux 👍
Brady Dowling
7
Je ne pense pas que cela réponde à la question. Je ne sais pas pourquoi il est si bien noté. Cette commande renvoie simplement la version de tout tmux se trouvant sur mon chemin.
quant
4
C'est parce que cela apparaît comme le premier résultat de Comment obtenir la version tmux .
Derek 朕 會 功夫
ne déteste pas le joueur, déteste le jeu
sixty4bit
13

Pour trouver la version actuelle du tmux en cours d'exécution, vous devez trouver le PID du tmux:

pgrep tmux

Avec ces informations, vous pouvez vérifier la version en exécutant:

lsof -p $tmuxPID | grep REG | grep -i -e deleted -e "tmux$"

S'il n'y a pas de (supprimé) à côté du fichier tmux répertorié, vous pouvez simplement exécuter ce fichier avec un -V.

S'il en résulte des fichiers «(supprimés)», vous exécutez une ancienne version désinstallée. Si vous êtes sous Linux, vous pouvez comprendre ce que c'est en exécutant:

/proc/$tmuxPID/exe -V`

Si vous êtes sous OS X, vous êtes coincé avec les informations contenues dans le chemin d'accès au nom de fichier, peut-être quelque chose comme Cellar/tmux/<version number>/bin/tmux.

Vous pouvez combiner plusieurs de ces étapes en une seule ligne suivante:

for tmuxPID in $(pgrep tmux); do lsof -p $tmuxPID | grep REG | grep -i -e deleted -e "tmux$"; done

Ou si vous êtes sous Linux, cela fonctionne toujours:

for tmuxPID in $(pgrep tmux); do /proc/$tmuxPID/exe -V; done
ClashTheBunny
la source
6

Pour obtenir la version du serveur tmux, vous pouvez utiliser display-message.

./tmux2.3 display-message -p "#{version}"

Montrera la version du serveur (2.7 dans mon cas)

-p dirigera la sortie de stdout afin que vous puissiez écrire avec lui et {version} peut être n'importe quoi de la section FORMATS de la page de manuel.

Ce qui suit vous donnera l'exécutable de votre serveur tmux.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
whatintheworld
la source
Le /prochack est uniquement Linux (et éventuellement Solaris, etc., mais pas généralement portable)
tripleee
display-message est la solution parfaite pour obtenir la version serveur!
Ben Bernard le