Я знаю , что я могу работать , tmux -V
чтобы найти вариант , tmux
что в моем PATH
, но как я могу получить версию tmux
, которая в настоящее время работает ?
Я знаю , что я могу работать , tmux -V
чтобы найти вариант , tmux
что в моем PATH
, но как я могу получить версию tmux
, которая в настоящее время работает ?
Ответы:
Наиболее очевидный, но не на 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, которая работает в данный момент, а не ту, которая была установлена.
tmux
он был обновлен с момента запуска данного процесса.
ps: option requires an argument -- u
tmux -V
, протестировано на Ubuntu и OSX
which tmux
чтобы узнать путь
Как указано в комментарии, tmux -V
возвращает версию:
$ tmux -V
# tmux 1.8
Проверено на Centos 7 и OSX 10.11.5.
Чтобы найти актуальную версию запущенного 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
Чтобы получить версию сервера 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 и т.д., но в целом не портативный)
tmux -V