Как узнать текущую версию tmux?

138

Я знаю , что я могу работать , tmux -Vчтобы найти вариант , tmuxчто в моем PATH, но как я могу получить версию tmux, которая в настоящее время работает ?

шест для отталкивания
источник
124
Уважаемые гуглеры! tmux -V
Матин Улхак

Ответы:

89

Наиболее очевидный, но не на 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, которая работает в данный момент, а не ту, которая была установлена.

vodolaz095
источник
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 06
148

Как указано в комментарии, tmux -Vвозвращает версию:

$ tmux -V
# tmux 1.8

Проверено на Centos 7 и OSX 10.11.5.

sixty4bit
источник
2
Это должен быть выбранный ответ. Также протестировал это на Amazon Linux 👍
Брэди Даулинг,
7
Я не думаю, что это отвечает на вопрос. Я не уверен, почему он так высоко оценен. Эта команда просто возвращает версию любого tmux на моем пути.
колич
4
Это потому, что это отображается как первый результат Как получить версию tmux .
Derek 朕 會
не ненавидь игрока, ненавидь игру
sixty4bit
13

Чтобы найти актуальную версию запущенного tmux, вам нужно найти PID tmux:

pgrep tmux

Имея эту информацию, вы можете проверить версию, запустив:

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

Если рядом с файлом tmux в списке нет (удаленного), вы можете просто запустить этот файл с расширением -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
ClashTheBunny
источник
6

Чтобы получить версию сервера tmux, вы можете использовать display-message.

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

Покажет версию сервера (в моем случае 2.7)

-p направит вывод stdout, чтобы вы могли использовать его в сценарии, а {версия} может быть чем угодно из раздела ФОРМАТЫ на странице руководства.

Следующее даст вам исполняемый файл вашего сервера tmux.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
что в мире
источник
/procХак Linux только (и , возможно , Solaris и т.д., но в целом не портативный)
tripleee
display-message - отличное решение для получения серверной версии!
Бен Бернард