Tmux: Jak mogę sprawdzić, która aktualnie działa wersja tmux?

146

Wiem, że mogę uruchomić, tmux -Vaby znaleźć wersję, tmuxktóra jest w moim PATH, ale jak mogę uzyskać wersję, tmuxktóra jest obecnie uruchomiona ?

Quant
źródło
129
Drodzy Googlersi: tmux -V
Mateen Ulhaq

Odpowiedzi:

99

Najbardziej oczywistym, ale nie w 100% poprawnym sposobem jest wykonanie tego polecenia w konsoli

$ tmux -V

i otrzymuj takie dane wyjściowe tmux 2.9az zainstalowaną wersją tmux, która obecnie nie jest uruchomiona. W 99% wystarczy, ale mogą pojawić się subtelne niuanse.

Polecenie tmux -V zwróci wersję tmux zainstalowaną w / usr / bin / tmux lub w dowolnym innym katalogu wewnątrz zmiennej PATH. Jeśli masz już uruchomiony tmux, możliwe jest, że tmux można uruchomić z pliku binarnego innej wersji iz innego miejsca (na przykład tmux można uruchomić z /home/user/bin/tmux). W takim przypadku musisz zadzwonić

$ ps  -e | grep tmux

aby zobaczyć PID wszystkich aktualnie uruchomionych procesów tmux. Wyświetli coś takiego

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

Tutaj numer 19701 przedstawia identyfikator procesu (PID) aktualnie działającego serwera tmux.

Po uzyskaniu PID serwera tmux możesz uruchomić polecenie


$ lsof -p 19701

aby uzyskać informacje o OBECNIE DZIAŁAJĄCYM procesie serwera tmux (w moim przypadku jest to 19701), który wyświetli coś takiego (Rysunek 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

jak widać, aktualnie uruchomiony tmux został wykonany z pliku binarnego umieszczonego w / usr / bin / tmux.

Lub możesz zadzwonić do jednej wkładki


    lsof -p `pgrep 'tmux: server'`

aby osiągnąć taką samą wydajność, jak na rysunku 1

Po uzyskaniu ścieżki do pliku binarnego tmux OBECNIE DZIAŁAJĄCEGO (w moim przypadku tak było /usr/bin/tmux), możesz wykonać ten plik binarny z flagą -V, aby uzyskać jego wersję


/usr/bin/tmux -V

lub, jeśli tmux został zainstalowany przez ograniczonego użytkownika w /home/user/bin/tmux,


/home/user/bin/tmux -V

W rezultacie otrzymasz aktualnie działającą wersję tmux, a nie tę, która została zainstalowana.

vodolaz095
źródło
7
Warto wspomnieć, że to nie zadziała, jeśli tmuxzostało zaktualizowane od czasu rozpoczęcia danego procesu.
nikt
3
W MacOsX mam błądps: option requires an argument -- u
alexserver
55
po prostu uruchom tmux -V, przetestuj na Ubuntu i OSX
Mauricio Poppe
1
ta metoda będzie wymagała najpierw wykonania tmux; zamiast tego możesz użyć, which tmuxaby znaleźć ścieżkę
Shiva,
1
@Shiva - autor pytania powiedział: "Wersja tmux, która jest aktualnie uruchomiona?" - więc tmux już działa
vodolaz095
150

Jak wskazano w komentarzu, tmux -Vzwraca wersję:

$ tmux -V
# tmux 1.8

Testowano na Centos 7 i OSX 10.11.5.

sixty4bit
źródło
2
To powinna być wybrana odpowiedź. Przetestowałem to również na Amazon Linux 👍
Brady Dowling,
8
Nie sądzę, żeby to odpowiadało na pytanie. Nie jestem pewien, dlaczego jest tak wysoko oceniany. To polecenie po prostu zwraca wersję dowolnego tmuxa na mojej ścieżce.
ilość
4
To dlatego, że pojawia się jako pierwszy wynik Jak uzyskać wersję tmux .
Derek 朕 會 功夫
nie nienawidzę gracza, nienawidzę gry
sixty4bit
13

Aby znaleźć aktualną wersję uruchomionego tmux, musisz znaleźć PID tmux:

pgrep tmux

Dzięki tym informacjom możesz sprawdzić wersję, uruchamiając:

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

Jeśli obok wymienionego pliku tmux nie ma (usuniętego), możesz po prostu uruchomić ten plik z rozszerzeniem -V.

Jeśli skutkuje to plikami, które są „(usunięte)”, używasz starej, odinstalowanej wersji. Jeśli korzystasz z Linuksa, możesz dowiedzieć się, co to jest, uruchamiając:

/proc/$tmuxPID/exe -V`

Jeśli korzystasz z systemu OS X, utkniesz z wszelkimi informacjami znajdującymi się w ścieżce do nazwy pliku, prawdopodobnie na przykład Cellar/tmux/<version number>/bin/tmux.

Wiele z tych kroków można połączyć w jeden wiersz:

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

Lub jeśli korzystasz z Linuksa, to zawsze działa:

for tmuxPID in $(pgrep tmux); do /proc/$tmuxPID/exe -V; done
ClashTheBunny
źródło
9

Aby uzyskać wersję serwera tmux , możesz użyć display-message.

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

Pokaże wersję serwera (w moim przypadku 2.7)

-p pokieruje wyjście standardowego wyjścia tak, abyś mógł z nim skryptować, a {wersja} może być dowolną pozycją z sekcji FORMATY na stronie podręcznika.

Poniżej znajdziesz plik wykonywalny twojego serwera tmux.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
whatintheworld
źródło
/procHack jest tylko Linux (i ewentualnie Solaris etc, ale na ogół nie przenośne)
tripleee
display-message to idealne rozwiązanie do pobrania wersji serwerowej!
Ben Bernard
To powinna być najlepsza odpowiedź.
mondaugen
W działającym kliencie tmux możesz to zrobić:display-message -p "#{version}"
Epimetheus