Wie finde ich die aktuell laufende Version von tmux heraus?

137

Ich weiß , dass ich laufen kann tmux -Vdie Version zu finden , tmuxdass in meinem ist PATH, aber wie kann ich die Version von tmuxder ist derzeit läuft ?

quant
quelle
124
Liebe Googler: tmux -V
Mateen Ulhaq

Antworten:

87

Die naheliegendste, aber nicht 100% korrekte Methode besteht darin, diesen Befehl in der Konsole auszuführen

$ tmux -V

und erhalten Sie eine Ausgabe wie diese tmux 2.9amit der Version von tmux INSTALLED, die derzeit nicht ausgeführt wird. In 99% der Fälle reicht es aus, aber es kann subtile Nuancen geben.

Der Befehl tmux -V gibt die Version von tmux zurück, die unter / usr / bin / tmux oder einem anderen Verzeichnis in Ihrer PATH-Variablen installiert ist. Wenn tmux bereits ausgeführt wird, kann tmux möglicherweise von einer Binärdatei einer anderen Version und von einem anderen Ort aus gestartet werden (z. B. kann tmux von dort aus gestartet werden /home/user/bin/tmux). In diesem Fall müssen Sie anrufen

$ ps  -e | grep tmux

um die PID aller aktuell ausgeführten tmux-Prozesse anzuzeigen. Es wird so etwas ausgeben

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

Hier zeigt Nummer 19701 die Prozess-ID (PID) des aktuell ausgeführten tmux-Servers.

Nachdem Sie die PID des tmux-Servers erhalten haben, können Sie den Befehl ausführen


$ lsof -p 19701

um Informationen über den aktuell laufenden tmux-Serverprozess (in meinem Fall 19701) zu erhalten, der so etwas ausgibt (Abbildung 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

Wie Sie sehen können, wurde tmux, das gerade ausgeführt wird, von einer Binärdatei ausgeführt, die in / usr / bin / tmux abgelegt ist.

Oder Sie können einen Liner anrufen


    lsof -p `pgrep 'tmux: server'`

um die gleiche Leistung wie in Abbildung 1 zu erzielen

Nachdem Sie den Pfad zu tmux binary CURRENTLY RUNNING erhalten haben (in meinem Fall war es das /usr/bin/tmux), können Sie diese Binärdatei mit dem Flag -V ausführen, um ihre Version zu erhalten


/usr/bin/tmux -V

oder, wenn tmux von einem eingeschränkten Benutzer in installiert wurde /home/user/bin/tmux,


/home/user/bin/tmux -V

Als Ergebnis erhalten Sie eine Version von tmux, die derzeit ausgeführt wird, nicht die, die installiert wurde.

vodolaz095
quelle
7
Es ist erwähnenswert, dass dies nicht funktioniert, wenn tmuxes seit dem Start des angegebenen Prozesses aktualisiert wurde.
niemand
3
In MacOsX habe ich einen Fehlerps: option requires an argument -- u
alexserver
55
laufen Sie einfach tmux -V, getestet auf Ubuntu und OSX
Mauricio Poppe
1
Für diese Methode müssen Sie zuerst tmux ausführen. Stattdessen könnten Sie which tmuxden Weg herausfinden
Shiva
1
@Shiva - Frage Autor sagte "Version von tmux, die derzeit läuft?" - so läuft tmux bereits
vodolaz095
148

Gibt, wie in einem Kommentar erwähnt, tmux -Vdie Version zurück:

$ tmux -V
# tmux 1.8

Getestet unter Centos 7 und OSX 10.11.5.

sechzig4bit
quelle
2
Dies sollte die ausgewählte Antwort sein. Auch getestet auf Amazon Linux Brady
Brady Dowling
7
Ich denke nicht, dass dies die Frage beantwortet. Ich bin mir nicht sicher, warum es so hoch bewertet wird. Dieser Befehl gibt nur die Version von tmux zurück, die sich in meinem Pfad befindet.
Quant
4
Dies liegt daran, dass dies als erstes Ergebnis von How to get tmux version angezeigt wird .
Derek 21 會 功夫
hasse den Spieler nicht, hasse das Spiel
sixty4bit
13

Um die aktuelle Version des laufenden tmux zu finden, müssen Sie die PID des tmux ermitteln:

pgrep tmux

Mit diesen Informationen können Sie die Version überprüfen, indem Sie Folgendes ausführen:

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

Wenn neben der aufgelisteten tmux-Datei keine (gelöschte) Datei angezeigt wird, können Sie diese Datei einfach mit einer ausführen -V.

Wenn dies zu Dateien führt, die "(gelöscht)" sind, führen Sie eine alte, deinstallierte Version aus. Wenn Sie unter Linux arbeiten, können Sie herausfinden, was es ist, indem Sie Folgendes ausführen:

/proc/$tmuxPID/exe -V`

Wenn Sie unter OS X arbeiten, bleiben Sie bei den Informationen im Pfad zum Dateinamen hängen, möglicherweise bei so etwas Cellar/tmux/<version number>/bin/tmux.

Sie können viele dieser Schritte in den folgenden Einzeiler kombinieren:

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

Oder wenn Sie unter Linux arbeiten, funktioniert dies immer:

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

Um die Version des tmux- Servers zu erhalten , können Sie display-message verwenden.

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

Zeigt die Version des Servers an (2.7 in meinem Fall)

-p steuert die Ausgabe von stdout, damit Sie damit ein Skript erstellen können, und {version} kann alles aus dem Abschnitt FORMATS in der Manpage sein.

Im Folgenden finden Sie die ausführbare Datei Ihres tmux-Servers.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
Was in aller Welt
quelle
Der /procHack ist nur Linux (und möglicherweise Solaris usw .; aber nicht allgemein portabel)
Tripleee
display-message ist die perfekte Lösung, um die Serverversion zu erhalten!
Ben Bernard