Wiem, że mogę uruchomić, tmux -V
aby znaleźć wersję, tmux
która jest w moim PATH
, ale jak mogę uzyskać wersję, tmux
która jest obecnie uruchomiona ?
Odpowiedzi:
Najbardziej oczywistym, ale nie w 100% poprawnym sposobem jest wykonanie tego polecenia w konsoli
$ tmux -V
i otrzymuj takie dane wyjściowe tmux 2.9a
z 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.
tmux
zostało zaktualizowane od czasu rozpoczęcia danego procesu.
ps: option requires an argument -- u
tmux -V
, przetestuj na Ubuntu i OSX
which tmux
aby znaleźć ścieżkę
Jak wskazano w komentarzu, tmux -V
zwraca wersję:
$ tmux -V
# tmux 1.8
Testowano na Centos 7 i OSX 10.11.5.
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
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
/proc
Hack jest tylko Linux (i ewentualnie Solaris etc, ale na ogół nie przenośne)
:display-message -p "#{version}"
tmux -V