Como descubro a versão atualmente em execução do tmux?

138

Eu sei que eu posso correr tmux -Vpara encontrar a versão do tmuxque está no meu PATH, mas como posso obter a versão do tmuxque está actualmente em execução ?

quant
fonte
124
Caros Googlers: tmux -V
Mateen Ulhaq 10/10

Respostas:

88

A maneira mais óbvia, mas não 100% correta, é executar este comando no console

$ tmux -V

e receba uma saída como esta tmux 2.9acom a versão do tmux INSTALLED, que não está em execução no momento. Em 99% dos casos, é suficiente, mas pode haver nuances sutis.

O comando tmux -V retornará a versão do tmux instalada em / usr / bin / tmux ou em qualquer outro diretório dentro da sua variável PATH. Se você já possui o tmux em execução, é possível que o tmux possa ser iniciado a partir do binário de outra versão e de outro local (por exemplo, o tmux pode ser iniciado a partir de /home/user/bin/tmux). Nesse caso, você deve ligar para

$ ps  -e | grep tmux

para ver o PID de todos os processos tmux atualmente em execução. Ele produzirá algo como isto

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

Aqui, o número 19701 mostra a identificação do processo (PID) do servidor tmux atualmente em execução.

Após obter o PID do servidor tmux, você pode executar o comando


$ lsof -p 19701

para obter informações sobre o processo do servidor tmux ATUALIZADO ATUALMENTE (no meu caso, seu 19701) que produzirá algo como isto (Figura 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

como você pode ver, o tmux atualmente em execução foi executado a partir do binário colocado em / usr / bin / tmux.

Ou você pode ligar para um forro


    lsof -p `pgrep 'tmux: server'`

para obter a mesma saída da Figura 1

Depois de encontrar o caminho para o binário tmux ATUALIZADO ATUALMENTE (no meu caso /usr/bin/tmux), você pode executar esse binário com o sinalizador -V para obter sua versão


/usr/bin/tmux -V

ou, se o tmux foi instalado por um usuário limitado em /home/user/bin/tmux,


/home/user/bin/tmux -V

E, como resultado, você obterá a versão do tmux atualmente em execução, não a que foi instalada.

vodolaz095
fonte
7
Vale ressaltar que isso não funcionará se tmuxtiver sido atualizado desde que o processo fornecido foi iniciado.
ninguém
3
No MacOsX, eu tenho um errops: option requires an argument -- u
alexserver 19/11/2015
55
apenas execute tmux -V, teste no Ubuntu e OSX #
Mauricio Poppe
1
este método exigirá que você execute o tmux primeiro; em vez disso você pode usar which tmuxpara descobrir o caminho
Shiva
1
@Shiva - autor pergunta disse "versão do tmux que está sendo executado no momento?" - então o tmux já está sendo executado
vodolaz095 6/17
148

Como apontado em um comentário, tmux -Vretorna a versão:

$ tmux -V
# tmux 1.8

Testado no Centos 7 e OSX 10.11.5.

sixty4bit
fonte
2
Essa deve ser a resposta selecionada. Também testei isso no Amazon Linux 👍
Brady Dowling
7
Eu não acho que isso responda à pergunta. Não sei por que é tão bem avaliado. Esse comando apenas retorna a versão do tmux que estiver no meu caminho.
quant
4
É porque isso aparece como o primeiro resultado de Como obter a versão tmux .
Derek朕會功夫
Não odeio o jogador, deiam o jogo
sixty4bit
13

Para encontrar a versão atual do tmux em execução, você deve encontrar o PID do tmux:

pgrep tmux

Com essas informações, você pode verificar a versão executando:

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

Se não houver um (excluído) ao lado do arquivo tmux listado, você pode simplesmente executá-lo com a -V.

Se resultar em arquivos "(excluídos)", você está executando uma versão antiga e desinstalada. Se você estiver no linux, poderá descobrir o que é executando:

/proc/$tmuxPID/exe -V`

Se você está no OS X, está preso a qualquer informação que esteja no caminho para o nome do arquivo, possivelmente algo parecido Cellar/tmux/<version number>/bin/tmux.

Você pode combinar muitas dessas etapas na seguinte linha única:

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

Ou se você estiver no Linux, isso sempre funciona:

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

Para obter a versão do servidor tmux, você pode usar display-message.

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

Vai mostrar a versão do servidor (2.7 no meu caso)

-p direcionará a saída do stdout para que você possa escrever com ele e {version} possa ser qualquer coisa da seção FORMATS na página de manual.

O seguinte fornecerá o executável do seu servidor tmux.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
o que no mundo
fonte
O /proctruque é somente Linux (e, possivelmente, Solaris etc, mas geralmente não portátil)
tripleee
display-message é a solução perfeita para obter a versão do servidor!
Ben Bernard