¿Cómo averiguo la versión actual de tmux?


138

Sé que puedo ejecutar tmux -Vpara encontrar la versión tmuxque está en mi PATH, pero ¿cómo puedo obtener la versión tmuxque se está ejecutando actualmente ?


124
Estimados Googlers: tmux -V
Mateen Ulhaq

Respuestas:


88

La forma más obvia, pero no 100% correcta, es ejecutar este comando en la consola

$ tmux -V

y reciba una salida como esta tmux 2.9acon la versión de tmux INSTALADA, que actualmente no se está ejecutando. En el 99% de los casos es suficiente, pero puede haber sutiles matices.

El comando tmux -V devolverá la versión de tmux instalada en / usr / bin / tmux o cualquier otro directorio dentro de su variable PATH. Si ya tiene tmux ejecutándose, es posible que tmux pueda iniciarse desde un binario de otra versión y desde un lugar diferente (por ejemplo, tmux puede iniciarse desde /home/user/bin/tmux). En este caso, tienes que llamar

$ ps  -e | grep tmux

para ver el PID de todos los procesos tmux actualmente en ejecución. Producirá algo como esto

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

Aquí, el número 19701 representa la identificación del proceso (PID) del servidor tmux actualmente en ejecución.

Después de obtener el PID del servidor tmux, puede ejecutar el comando


$ lsof -p 19701

para obtener información sobre el proceso actual del servidor tmux (en mi caso es 19701) que generará algo como esto (Figura 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

Como puede ver, tmux actualmente en ejecución se ejecutó desde un binario ubicado en / usr / bin / tmux.

O puedes llamar a un trazador de líneas


    lsof -p `pgrep 'tmux: server'`

para lograr el mismo resultado que la Figura 1

Después de obtener la ruta al binario tmux EN EJECUCIÓN ACTUAL (en mi caso, lo fue /usr/bin/tmux), puede ejecutar este binario con la bandera -V para obtener su versión


/usr/bin/tmux -V

o, si tmux fue instalado por un usuario limitado en /home/user/bin/tmux,


/home/user/bin/tmux -V

Y, como resultado, obtendrá la versión de tmux actualmente en ejecución, no la que estaba instalada.


77
Vale la pena mencionar que esto no funcionará si tmuxse ha actualizado desde que se inició el proceso dado.
nadie

3
En MacOsX tengo un errorps: option requires an argument -- u
alexserver

55
acaba de ejecutar tmux -V, probado en Ubuntu y OSX
Mauricio Poppe

1
este método requerirá que ejecutes tmux primero; en su lugar, podría utilizar which tmuxpara encontrar el camino
Shiva

1
@Shiva - el autor de la pregunta dijo "¿la versión de tmux que se está ejecutando actualmente?" - entonces tmux ya se está ejecutando
vodolaz095

148

Como se señaló en un comentario, tmux -Vdevuelve la versión:

$ tmux -V
# tmux 1.8

Probado en Centos 7 y OSX 10.11.5.


2
Esta debería ser la respuesta seleccionada. También probé esto en Amazon Linux 👍
Brady Dowling

77
No creo que esto responda la pregunta. No estoy seguro de por qué tiene una calificación tan alta. Ese comando solo devuelve la versión de lo que sea tmux en mi camino.
Quant

44
Es porque esto aparece como el primer resultado de Cómo obtener la versión tmux .
Derek 朕 會 功夫

no odies al jugador, odia el juego
sixty4bit

13

Para encontrar la versión real de tmux que se está ejecutando, debe encontrar el PID de tmux:

pgrep tmux

Con esta información, puede verificar la versión ejecutando:

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

Si no hay un (eliminado) al lado del archivo tmux en la lista, puede ejecutar ese archivo con un -V.

Si da como resultado archivos que están "(eliminados)", está ejecutando una versión antigua y desinstalada. Si está en Linux, puede averiguar qué es ejecutando:

/proc/$tmuxPID/exe -V`

Si está en OS X, está atascado con cualquier información que esté en la ruta al nombre del archivo, posiblemente algo así Cellar/tmux/<version number>/bin/tmux.

Puede combinar muchos de estos pasos en la siguiente línea:

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

O si estás en Linux, esto siempre funciona:

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

6

Para obtener la versión del servidor tmux , puede usar display-message.

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

Mostrará la versión del servidor (2.7 en mi caso)

-p dirigirá la salida de stdout para que pueda escribir con él y {version} puede ser cualquier cosa desde la sección FORMATS en la página man.

Lo siguiente le dará el ejecutable de su servidor tmux.

realpath /proc/$(tmux display-message -p "#{pid}")/exe

El /proctruco es solo Linux (y posiblemente Solaris, etc.; pero no generalmente portátil)
tripleee

¡display-message es la solución perfecta para obtener la versión del servidor!
Ben Bernard
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.