Câu trả lời:
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.9a
vớ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.
tmux
đã được nâng cấp kể từ khi quy trình nhất định được bắt đầu.
ps: option requires an argument -- u
tmux -V
, thử nghiệm trên Ubuntu và OSX
which tmux
để tìm ra con đường
Như đã chỉ ra trong một bình luận, tmux -V
trả về phiên bản:
$ tmux -V
# tmux 1.8
Đã thử nghiệm trên Centos 7 và OSX 10.11.5.
Để 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
Để 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
/proc
hack chỉ là Linux (và có thể là Solaris, v.v., nhưng nói chung không phải là di động)
tmux -V