Як дізнатися поточну версію tmux?


138

Я знаю, що я можу запустити, tmux -Vщоб знайти свою версію, tmuxяка є в моїй PATH, але як я можу отримати версію, tmuxяка зараз працює ?


124
Шановні користувачі Google: tmux -V
Mateen Ulhaq

Відповіді:


88

Найбільш очевидним, але не на 100% правильним способом є виконання цієї команди в консолі

$ tmux -V

і отримувати такий вихід tmux 2.9aіз версією tmux ВСТАНОВЛЕНО, наразі не працює. У 99% випадків цього достатньо, але можуть бути тонкі нюанси.

Команда tmux -V поверне версію tmux, встановлену в / usr / bin / tmux або будь-який інший каталог всередині вашої змінної PATH. Якщо у вас вже запущено tmux, можливо, tmux можна запустити з двійкової іншої версії та з іншого місця (наприклад, tmux можна запустити з /home/user/bin/tmux). У цьому випадку вам доведеться зателефонувати

$ ps  -e | grep tmux

щоб побачити PID усіх запущених процесів tmux. Це виведе щось подібне

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

Тут номер 19701 зображує ідентифікатор процесу (PID) поточного запущеного сервера tmux.

Після отримання PID сервера tmux, ви можете запустити команду


$ lsof -p 19701

щоб отримати інформацію про СУЧАСНЕ РУНЕННЯ tmux-серверного процесу (в моєму випадку його 19701), який виведе щось подібне (рис. 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

як ви бачите, що зараз запущений tmux виконувався з двійкового файлу, розміщеного в / usr / bin / tmux.

Або ви можете зателефонувати в один лайнер


    lsof -p `pgrep 'tmux: server'`

для досягнення такого ж виходу, як на малюнку 1

Після того як ви отримаєте шлях до tmux бінарного СУЧАСНОГО ЗАПУСКУВАННЯ, (у моєму випадку це було /usr/bin/tmux), ви можете виконати цей бінарний файл із прапором -V, щоб отримати його версію


/usr/bin/tmux -V

або, якщо tmux був встановлений обмеженим користувачем у /home/user/bin/tmux,


/home/user/bin/tmux -V

І, як результат, ви отримаєте версію tmux, що працює зараз, а не ту, яку встановлено.


7
Варто зазначити, що це не буде працювати, якщо tmuxоновлено з моменту запуску даного процесу.
ніхто

3
У MacOsX у мене помилкаps: option requires an argument -- u
alexserver

55
просто запустіть tmux -V, протестували на Ubuntu та OSX
Маурісіо Поппе

1
цей метод вимагатиме від вас спочатку виконати tmux; замість цього ви могли which tmuxб дізнатися шлях
Шива

1
@Shiva - автор запитання сказав "версія tmux, яка зараз працює?" - так tmux вже працює
vodolaz095

148

Як зазначено в коментарі, tmux -Vповертає версію:

$ tmux -V
# tmux 1.8

Тестовано на Centos 7 та OSX 10.11.5.


2
Це має бути обрана відповідь. Також тестували це на Amazon Linux 👍
Брейді Даулінг

7
Я не думаю, що це відповідає на питання. Я не впевнений, чому це так високо оцінено. Ця команда просто повертає версію будь-якого tmux на моєму шляху.
Quant

4
Це тому, що це відображається як перший результат роботи Як отримати tmux версію .
Дерек 朕 會 功夫

Не ненавиджу гравця, ненавиджу гру
sixty4bit

13

Щоб знайти реальну версію tmux, яка працює, ви повинні знайти PID tmux:

pgrep tmux

За допомогою цієї інформації ви можете перевірити версію, запустивши:

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

Якщо поруч із переліченим файлом tmux немає (видалено), ви можете просто запустити цей файл із символом a -V.

Якщо це призведе до файлів, які "(видалено)", ви запускаєте стару, деінсталяційну версію. Якщо ви перебуваєте в Linux, ви можете зрозуміти, що це таке, запустивши:

/proc/$tmuxPID/exe -V`

Якщо ви перебуваєте на OS X, ви застрягли з будь-якою інформацією на шляху до назви файлу, можливо, щось подібне Cellar/tmux/<version number>/bin/tmux.

Ви можете об'єднати багато з цих кроків у наступний одноклавішний:

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

Або якщо ви працюєте в Linux, це завжди працює:

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

6

Щоб отримати версію сервера tmux, ви можете використовувати display-message.

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

Показуватиметься версія сервера (в моєму випадку 2.7)

-p спрямовуватиме висновок stdout, щоб ви могли сценаріювати з ним, і {версія} може бути будь-чим із розділу FORMATS на сторінці man.

Нижче наведено виконуваний файл вашого tmux-сервера.

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

/procХак Linux тільки (і , можливо , Solaris і т.д., але в цілому не портативний)
tripleee

display-message є ідеальним рішенням для отримання версії сервера!
Бен Бернард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.