Bagaimana cara mengetahui versi tmux yang sedang berjalan?

138

Saya tahu bahwa saya dapat menjalankan tmux -Vuntuk menemukan versi tmuxyang ada di saya PATH, tetapi bagaimana saya bisa mendapatkan versi tmuxyang sedang berjalan ?

bergalah
sumber
124
Para Googler yang terhormat: tmux -V
Mateen Ulhaq

Jawaban:

88

Paling jelas, tetapi tidak 100% cara yang benar adalah dengan menjalankan perintah ini di konsol

$ tmux -V

dan terima keluaran seperti ini tmux 2.9adengan versi tmux INSTALLED, saat ini tidak berjalan. Dalam 99% kasus sudah cukup, tetapi mungkin ada nuansa halus.

Perintah tmux -V akan mengembalikan versi tmux yang diinstal di / usr / bin / tmux atau direktori lain di dalam variabel PATH Anda. Jika Anda telah menjalankan tmux, ada kemungkinan tmux dapat dimulai dari biner versi lain dan dari tempat yang berbeda (misalnya, tmux dapat dimulai dari /home/user/bin/tmux). Dalam hal ini, Anda harus menelepon

$ ps  -e | grep tmux

untuk melihat PID dari semua proses tmux yang sedang berjalan. Ini akan menampilkan sesuatu seperti ini

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

Di sini, angka 19701 menggambarkan proses id (PID) dari server tmux yang sedang berjalan.

Setelah mendapatkan PID dari server tmux, Anda dapat menjalankan perintah


$ lsof -p 19701

untuk mendapatkan informasi tentang proses server tmux SAAT INI MENJALANKAN (dalam kasus saya tahun 19701) yang akan menampilkan sesuatu seperti ini (Gambar 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

seperti yang Anda lihat, tmux yang sedang berjalan dijalankan dari binary yang ditempatkan di / usr / bin / tmux.

Atau, Anda dapat menghubungi satu liner


    lsof -p `pgrep 'tmux: server'`

untuk mencapai hasil yang sama seperti Gambar 1

Setelah Anda mendapatkan path ke tmux binary SAAT INI MENJALANKAN, (dalam kasus saya, itu /usr/bin/tmux), Anda dapat menjalankan biner ini dengan flag -V untuk mendapatkan versinya


/usr/bin/tmux -V

atau, jika tmux diinstal oleh pengguna terbatas ke /home/user/bin/tmux,


/home/user/bin/tmux -V

Dan, sebagai hasilnya, Anda akan mendapatkan versi tmux yang sedang berjalan, bukan versi yang diinstal.

vodolaz095
sumber
7
Perlu disebutkan bahwa ini tidak akan berhasil jika tmuxtelah ditingkatkan sejak proses yang diberikan dimulai.
tidak ada yang
3
Dalam MacOsX saya memiliki kesalahanps: option requires an argument -- u
alexserver
55
jalankan tmux -V, diuji pada Ubuntu dan OSX
Mauricio Poppe
1
metode ini akan mengharuskan Anda untuk mengeksekusi tmux terlebih dahulu; alih-alih, Anda dapat menggunakannya which tmuxuntuk mencari tahu jalannya
Shiva
1
@ Shiva - pertanyaan penulis berkata "versi tmux yang sedang berjalan?" - jadi tmux sudah berjalan
vodolaz095
148

Seperti yang ditunjukkan dalam komentar, tmux -Vkembalikan versi:

$ tmux -V
# tmux 1.8

Diuji pada Centos 7 dan OSX 10.11.5.

sixty4bit
sumber
2
Ini harus menjadi jawaban yang dipilih. Juga menguji ini di Amazon Linux 👍
Brady Dowling
7
Saya tidak berpikir ini menjawab pertanyaan. Saya tidak yakin mengapa itu dinilai sangat tinggi. Perintah itu hanya mengembalikan versi tmux apa pun yang ada di jalur saya.
quant
4
Itu karena ini muncul sebagai hasil pertama dari Cara mendapatkan versi tmux .
Derek 朕 會 功夫
jangan membenci pemain, benci permainan
sixty4bit
13

Untuk menemukan versi aktual tmux yang sedang berjalan, Anda harus menemukan PID dari tmux:

pgrep tmux

Dengan info ini, Anda dapat memeriksa versi dengan menjalankan:

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

Jika tidak ada (dihapus) di sebelah file tmux yang terdaftar, Anda bisa menjalankan file itu dengan a -V.

Jika itu menghasilkan file yang "(dihapus)", Anda menjalankan versi lama, yang dihapus. Jika Anda menggunakan linux, Anda dapat mengetahui apa itu dengan menjalankan:

/proc/$tmuxPID/exe -V`

Jika Anda menggunakan OS X, Anda terjebak dengan informasi apa pun yang ada di jalur ke nama file, mungkin sesuatu seperti Cellar/tmux/<version number>/bin/tmux.

Anda dapat menggabungkan banyak langkah ini ke dalam satu-baris berikut:

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

Atau jika Anda menggunakan Linux, ini selalu berhasil:

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

Untuk mendapatkan versi server tmux Anda dapat menggunakan tampilan-pesan.

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

Akan menampilkan versi server (2,7 dalam kasus saya)

-p akan mengarahkan output stdout sehingga Anda dapat skrip dengannya dan {version} bisa apa saja dari bagian FORMATS di halaman manual.

Berikut ini akan memberi Anda executable dari server tmux Anda.

realpath /proc/$(tmux display-message -p "#{pid}")/exe
whatintheworld
sumber
The /prochack adalah Linux saja (dan mungkin Solaris dll, tetapi umumnya tidak portabel)
tripleee
display-message adalah solusi sempurna untuk mendapatkan versi server!
Ben Bernard