Come faccio a scoprire la versione attualmente in esecuzione di tmux?


138

So che posso correre tmux -Vper trovare la versione di tmuxquello che è nel mio PATH, ma come posso ottenere la versione di tmuxquella attualmente in esecuzione ?


124
Cari googler: tmux -V
Mateen Ulhaq,

Risposte:


88

Il modo più ovvio, ma non corretto al 100%, è eseguire questo comando in console

$ tmux -V

e ricevere output in questo modo tmux 2.9acon la versione di tmux INSTALLATA, attualmente non in esecuzione. Nel 99% dei casi è sufficiente, ma possono esserci sottili sfumature.

Il comando tmux -V restituirà la versione di tmux installata in / usr / bin / tmux o qualsiasi altra directory all'interno della variabile PATH. Se tmux è già in esecuzione, è possibile che tmux possa essere avviato da file binari di altre versioni e da posizioni diverse (ad esempio, è possibile avviare tmux /home/user/bin/tmux). In questo caso, devi chiamare

$ ps  -e | grep tmux

per visualizzare il PID di tutti i processi tmux attualmente in esecuzione. Produrrà qualcosa del genere

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

Qui, il numero 19701 descrive l'id di processo (PID) del server tmux attualmente in esecuzione.

Dopo aver ottenuto il PID del server tmux, è possibile eseguire il comando


$ lsof -p 19701

per ottenere informazioni sul processo tmux server CORRENTLY RUNNING (nel mio caso il suo 19701) che produrrà qualcosa del genere (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

come puoi vedere, tmux attualmente in esecuzione è stato eseguito da binario collocato in / usr / bin / tmux.

Oppure puoi chiamare una linea


    lsof -p `pgrep 'tmux: server'`

per ottenere lo stesso risultato della Figura 1

Dopo aver percorso il binario di tmux CURRENTLY RUNNING, (nel mio caso lo era /usr/bin/tmux), puoi eseguire questo binario con flag -V per ottenere la sua versione


/usr/bin/tmux -V

o, se tmux è stato installato da un utente limitato in /home/user/bin/tmux,


/home/user/bin/tmux -V

E, di conseguenza, otterrai la versione di tmux attualmente in esecuzione, non quella installata.


7
Vale la pena ricordare che questo non funzionerà se tmuxè stato aggiornato dall'avvio del processo dato.
nessuno

3
In MacOsX ho un erroreps: option requires an argument -- u
alexserver,

55
appena eseguito tmux -V, testato su Ubuntu e OSX
Mauricio Poppe,

1
questo metodo richiederà di eseguire prima tmux; invece potresti usare which tmuxper scoprire il percorso
Shiva,

1
@ Shiva - domanda autore ha detto "versione di tmux attualmente in esecuzione?" - quindi tmux è già in esecuzione
vodolaz095,

148

Come sottolineato in un commento, tmux -Vrestituisce la versione:

$ tmux -V
# tmux 1.8

Testato su Centos 7 e OSX 10.11.5.


2
Questa dovrebbe essere la risposta selezionata. Lo testò anche su Amazon Linux 👍
Brady Dowling

7
Non credo che questo risponda alla domanda. Non sono sicuro del motivo per cui è valutato così bene. Quel comando restituisce semplicemente la versione di qualunque tmux sia sul mio percorso.
quant

4
È perché questo si presenta come il primo risultato di Come ottenere la versione tmux .
Derek 朕 會 功夫

non odiare il giocatore, odiare il gioco
sixty4bit il

13

Per trovare la versione effettiva di tmux in esecuzione, devi trovare il PID di tmux:

pgrep tmux

Con queste informazioni, puoi verificare la versione eseguendo:

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

Se non è presente un (eliminato) accanto al file tmux elencato, puoi semplicemente eseguire quel file con un -V.

Se risulta in file "(eliminati)", è in esecuzione una versione precedente e disinstallata. Se sei su Linux, puoi capire di cosa si tratta eseguendo:

/proc/$tmuxPID/exe -V`

Se sei su OS X, sei bloccato con qualsiasi informazione si trovi nel percorso del nome file, forse qualcosa del genere Cellar/tmux/<version number>/bin/tmux.

Puoi combinare molti di questi passaggi nel seguente one-liner:

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

O se sei su Linux, funziona sempre:

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

6

Per ottenere la versione del server tmux è possibile utilizzare display-message.

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

Mostrerà la versione del server (2.7 nel mio caso)

-p dirigerà l'output di stdout in modo che tu possa eseguire lo script con esso e {versione} può essere qualsiasi cosa dalla sezione FORMATI nella pagina man.

Quanto segue ti fornirà l'eseguibile del tuo server tmux.

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

L' /prochacking è solo Linux (e forse Solaris ecc; ma non generalmente portatile)
tripleee

display-message è la soluzione perfetta per ottenere la versione del server!
Ben Bernard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.