[tmux] 현재 실행중인 tmux 버전을 어떻게 알 수 있습니까?

내가 실행할 수 있다는 것을 알고 tmux -V버전 찾을 tmux그건 내에 PATH있지만 버전 어떻게 얻을 수 있습니다 tmux현재 실행중인 ?



답변

콘솔 에서이 명령을 실행하는 것이 가장 분명하지만 100 % 올바른 방법은 아닙니다.

$ tmux -V

tmux 2.9a현재 실행되고 있지 않은 tmux INSTALLED 버전으로 이와 같은 출력을 수신합니다 . 99 %의 경우 충분하지만 미묘한 뉘앙스가있을 수 있습니다.

명령 tmux -V 은 / usr / bin / tmux 또는 PATH 변수 내의 다른 디렉토리에 설치된 tmux 버전을 반환합니다. tmux가 이미 실행중인 경우 다른 버전의 바이너리 및 다른 위치에서 tmux를 시작할 수 있습니다 (예 : tmux는에서 시작할 수 있음 /home/user/bin/tmux). 이 경우 전화해야합니다

$ ps  -e | grep tmux

현재 실행중인 모든 tmux 프로세스의 PID를 보려면 다음과 같이 출력됩니다

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

여기에서, 번호 19701은 현재 실행중인 tmux 서버의 프로세스 ID (PID)를 나타냅니다.

tmux 서버의 PID를 얻은 후 명령을 실행할 수 있습니다


$ lsof -p 19701

CURRENTLY RUNNING 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 바이너리 CURRENTLY RUNNING에 대한 경로를 얻은 후 (내 경우에는 /usr/bin/tmux) 플래그 -V를 사용하여이 바이너리를 실행하여 버전을 얻을 수 있습니다.


/usr/bin/tmux -V

또는 제한된 사용자가 tmux를에 설치 한 경우 /home/user/bin/tmux,


/home/user/bin/tmux -V

결과적으로 설치된 TMUX 버전이 아니라 현재 실행중인 tmux 버전을 얻게됩니다.


답변

주석에서 지적했듯이 tmux -V버전을 반환합니다.

$ tmux -V
# tmux 1.8

Centos 7 및 OSX 10.11.5에서 테스트되었습니다.


답변

실행중인 tmux의 실제 버전을 찾으려면 tmux의 PID를 찾아야합니다.

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 서버 의 버전을 얻으려면 표시 메시지를 사용할 수 있습니다.

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

서버 버전을 보여줄 것입니다 (필자의 경우 2.7)

-p는 stdout의 출력을 지시하므로이를 사용하여 스크립트를 작성할 수 있으며 {version}은 매뉴얼 페이지의 FORMATS 섹션에서 무엇이든 될 수 있습니다.

다음은 tmux 서버의 실행 파일을 제공합니다.

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


답변