Làm cách nào để tìm ra phiên bản hiện đang chạy của tmux?


137

Tôi biết rằng tôi có thể chạy tmux -Vđể tìm phiên bản tmuxđó là trong tôi PATH, nhưng làm thế nào tôi có thể nhận được phiên bản tmuxđó là hiện đang chạy ?


124
Kính gửi các nhân viên của Google: tmux -V
Mateen Ulhaq

Câu trả lời:


87

Rõ ràng nhất, nhưng cách không chính xác 100% là thực thi lệnh này trong bàn điều khiển

$ tmux -V

và nhận đầu ra như thế này tmux 2.9avới phiên bản tmux INSTALLED, hiện không chạy. Trong 99% trường hợp là đủ, nhưng có thể có những sắc thái tinh tế.

Lệnh tmux -V sẽ trả về phiên bản của tmux được cài đặt tại / usr / bin / tmux hoặc bất kỳ thư mục nào khác bên trong biến PATH của bạn. Nếu bạn đã chạy tmux, có thể tmux có thể được bắt đầu từ nhị phân của phiên bản khác và từ nơi khác (ví dụ: tmux có thể được bắt đầu từ đó /home/user/bin/tmux). Trong trường hợp này, bạn phải gọi

$ ps  -e | grep tmux

để xem PID của tất cả các quy trình tmux hiện đang chạy. Nó sẽ xuất ra một cái gì đó như thế này

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

Ở đây, số 19701 mô tả quá trình id (PID) của máy chủ tmux hiện đang chạy.

Sau khi nhận được PID của máy chủ tmux, bạn có thể chạy lệnh


$ lsof -p 19701

để có được thông tin về quy trình máy chủ tmux HIỆN TẠI HIỆN TẠI (trong trường hợp của tôi là 19701) sẽ tạo ra một cái gì đó như thế này (Hình 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

như bạn có thể thấy, tmux hiện đang chạy được thực thi từ nhị phân được đặt trong / usr / bin / tmux.

Hoặc, bạn có thể gọi một lót


    lsof -p `pgrep 'tmux: server'`

để đạt được đầu ra giống như Hình 1

Sau khi bạn nhận được đường dẫn đến tmux nhị phân HIỆN TẠI RUNNING, (trong trường hợp của tôi là vậy /usr/bin/tmux), bạn có thể thực hiện nhị phân này với cờ -V để có phiên bản của nó


/usr/bin/tmux -V

hoặc, nếu tmux được cài đặt bởi người dùng hạn chế vào /home/user/bin/tmux,


/home/user/bin/tmux -V

Và, kết quả là, bạn sẽ nhận được phiên bản tmux hiện đang chạy chứ không phải phiên bản đã được cài đặt.


7
Điều đáng nói là việc này sẽ không hoạt động nếu tmuxđã được nâng cấp kể từ khi quy trình nhất định được bắt đầu.
không ai

3
Trong MacOsX tôi có một lỗips: option requires an argument -- u
alexserver

55
chỉ cần chạy tmux -V, thử nghiệm trên Ubuntu và OSX
Mauricio Poppe

1
phương pháp này sẽ yêu cầu bạn thực hiện tmux trước; thay vào đó bạn có thể sử dụng which tmuxđể tìm ra con đường
Shiva

1
@Shiva - tác giả câu hỏi cho biết "phiên bản của tmux hiện đang chạy?" - vì vậy tmux đã chạy rồi
vodolaz095

148

Như đã chỉ ra trong một bình luận, tmux -Vtrả về phiên bản:

$ tmux -V
# tmux 1.8

Đã thử nghiệm trên Centos 7 và OSX 10.11.5.


2
Đây phải là câu trả lời được lựa chọn. Cũng đã thử nghiệm điều này trên Amazon Linux
Brady Dowling

7
Tôi không nghĩ rằng điều này trả lời câu hỏi. Tôi không chắc tại sao nó được đánh giá cao như vậy. Lệnh đó chỉ trả về phiên bản của bất kỳ tmux nào trong đường dẫn của tôi.
lượng

4
Đó là bởi vì đây là kết quả đầu tiên của Cách lấy phiên bản tmux .
Derek 朕 會

đừng ghét người chơi, ghét trò chơi
sixty4bit

13

Để tìm phiên bản thực tế của tmux đang chạy, bạn phải tìm PID của tmux:

pgrep tmux

Với thông tin này, bạn có thể kiểm tra phiên bản bằng cách chạy:

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

Nếu không có (đã xóa) bên cạnh tệp tmux được liệt kê, bạn có thể chạy tệp đó với a -V.

Nếu nó dẫn đến các tệp "(đã xóa)", thì bạn đang chạy phiên bản cũ, đã gỡ cài đặt. Nếu bạn đang dùng linux, bạn có thể tìm ra nó là gì bằng cách chạy:

/proc/$tmuxPID/exe -V`

Nếu bạn đang dùng OS X, bạn sẽ bị mắc kẹt với bất kỳ thông tin nào có trong đường dẫn đến tên tệp, có thể là một cái gì đó giống như Cellar/tmux/<version number>/bin/tmux.

Bạn có thể kết hợp nhiều bước trong các bước sau:

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

Hoặc nếu bạn dùng Linux, cái này luôn hoạt động:

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

5

Để có phiên bản của máy chủ tmux, bạn có thể sử dụng thông báo hiển thị.

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

Sẽ hiển thị phiên bản của máy chủ (2.7 trong trường hợp của tôi)

-p sẽ điều khiển đầu ra của thiết bị xuất chuẩn để bạn có thể viết kịch bản với nó và {phiên bản} có thể là bất cứ thứ gì từ phần FORMATS trong trang man.

Sau đây sẽ cung cấp cho bạn khả năng thực thi của máy chủ tmux của bạn.

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

Bản /prochack chỉ là Linux (và có thể là Solaris, v.v., nhưng nói chung không phải là di động)
tripleee

display-message là giải pháp hoàn hảo để có phiên bản máy chủ!
Ben Bernard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.