我知道我可以运行tmux -V
来查找我的PATH
中的tmux
版本,但是如何获得当前正在运行的tmux
版本
发布于 2014-11-03 07:39:35
最明显但不是100%正确的方法是在控制台中执行此命令
$ tmux -V
在安装了tmux版本但当前未运行的情况下,接收类似于此tmux 2.9a
的输出。在99%的情况下,这是足够的,但可以有微妙的细微差别。
命令tmux -V
将返回安装在/usr/bin/tmux或PATH变量中的任何其他目录中的tmux版本。如果您已经在运行tmux,那么可以从其他版本的二进制文件和不同的位置启动tmux (例如,可以从/home/user/bin/tmux
启动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中的二进制文件执行的。
或者,您可以调用一个liner
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版本,而不是安装的版本。
发布于 2016-06-11 09:30:40
正如评论中指出的,tmux -V
返回版本:
$ tmux -V
# tmux 1.8
在Centos 7和OSX 10.11.5上测试。
发布于 2015-05-07 18:06:45
要找到正在运行的tmux的实际版本,您必须找到tmux的PID:
pgrep tmux
有了这些信息,您可以通过运行以下命令来检查版本:
lsof -p $tmuxPID | grep REG | grep -i -e deleted -e "tmux$"
如果列出的tmux文件旁边没有(已删除),则可以使用-V
运行该文件。
如果它导致文件被“(删除)”,则您正在运行旧的、未安装的版本。如果您使用的是linux,可以通过运行以下命令找出它是什么:
/proc/$tmuxPID/exe -V`
如果你使用的是OS操作系统,你只能使用文件名路径中的任何信息,可能是像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
https://stackoverflow.com/questions/26705755
复制相似问题