如何找出当前正在运行的tmux版本?


137

我知道,我可以运行tmux -V找到的版本tmux是在我PATH,但我怎么能得到的版本tmux当前正在运行


124
尊敬的Google员工: tmux -V
Mateen Ulhaq,

Answers:


87

最明显但不是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

获取有关当前正在运行的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上进行了测试
Mauricio Poppe 2016年

1
此方法将要求您先执行tmux;相反,您可以使用它which tmux来寻找路径
Shiva

1
@Shiva-问题作者说:“当前正在运行的tmux版本?” -因此tmux已经在运行
vodolaz095

148

如注释中所指出,tmux -V返回版本:

$ tmux -V
# tmux 1.8

在Centos 7和OSX 10.11.5上测试。


2
这应该是选定的答案。还测试了这款在亚马逊的Linux👍
布雷迪道林

7
我认为这不能回答问题。我不确定为什么它被评为如此高。该命令仅返回我路径中任何tmux的版本。
定量

4
这是因为这显示为“ 如何获取tmux版本”的第一个结果。
德里克·朕会功夫,

不要恨玩家,不要恨游戏
sixty4bit 17-10-26

13

要查找正在运行的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

5

要获取tmux 服务器的版本,可以使用display-message。

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

将显示服务器的版本(以我的情况为2.7)

-p将指示stdout的输出,因此您可以使用它来编写脚本,而{version}可以是手册页中FORMATS部分中的任何内容。

以下内容将为您提供tmux服务器的可执行文件。

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

/proc黑客是仅Linux(和可能的Solaris等;但一般不便携式)
tripleee

显示消息是获取服务器版本的完美解决方案!
本·伯纳德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.