ฉันจะค้นหา tmux เวอร์ชันที่กำลังทำงานอยู่ได้อย่างไร


138

ฉันรู้ว่าฉันสามารถเรียกใช้tmux -Vเพื่อค้นหาเวอร์ชันtmuxที่อยู่ในของฉันPATHแต่ฉันจะรับเวอร์ชันtmuxที่กำลังทำงานอยู่ได้อย่างไร


124
เรียน Googler: tmux -V
Mateen Ulhaq

คำตอบ:


89

วิธีที่ชัดเจนที่สุด แต่ไม่ถูกต้อง 100% คือการรันคำสั่งนี้ในคอนโซล

$ tmux -V

และรับเอาต์พุตเช่นนี้tmux 2.9aด้วยเวอร์ชันของ tmux INSTALLED ไม่ได้ทำงานอยู่ในขณะนี้ ในกรณี 99% ก็เพียงพอแล้ว แต่อาจมีความแตกต่างเล็กน้อย

คำสั่งtmux -V จะส่งคืนเวอร์ชันของ tmux ที่ติดตั้งที่ / usr / bin / tmux หรือไดเร็กทอรีอื่น ๆ ภายในตัวแปร PATH ของคุณ หากคุณใช้ tmux อยู่แล้วอาจเป็นไปได้ว่า tmux สามารถเริ่มต้นจากไบนารีของเวอร์ชันอื่นและจากที่อื่นได้ (เช่นสามารถเริ่ม tmux ได้จาก/home/user/bin/tmux) ในกรณีนี้คุณต้องโทร

$ ps  -e | grep tmux

เพื่อดู PID ของกระบวนการ tmux ทั้งหมดที่กำลังทำงานอยู่ มันจะออกมาแบบนี้

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

ที่นี่หมายเลข 19701 แสดงรหัสกระบวนการ (PID) ของเซิร์ฟเวอร์ tmux ที่กำลังทำงานอยู่

หลังจากได้รับ PID ของเซิร์ฟเวอร์ tmux แล้วคุณสามารถรันคำสั่งได้


$ 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

1
วิธีนี้จะทำให้คุณต้องรัน tmux ก่อน แต่คุณสามารถใช้which tmuxเพื่อค้นหาเส้นทาง
พระอิศวร

1
@Shiva - ผู้เขียนคำถามกล่าวว่า "เวอร์ชันของ tmux ที่กำลังทำงานอยู่" - ดังนั้น tmux จึงทำงานอยู่แล้ว
vodolaz095

148

ตามที่ระบุไว้ในความคิดเห็นtmux -Vส่งคืนเวอร์ชัน:

$ tmux -V
# tmux 1.8

ทดสอบบน Centos 7 และ OSX 10.11.5


2
นี่ควรเป็นคำตอบที่เลือก ทดสอบสิ่งนี้บน Amazon Linux ด้วย👍
Brady Dowling

7
ฉันไม่คิดว่าสิ่งนี้จะตอบคำถามได้ ฉันไม่แน่ใจว่าทำไมถึงได้คะแนนสูงมาก คำสั่งนั้นจะส่งคืนเวอร์ชันของ tmux ที่อยู่ในเส้นทางของฉัน
quant

4
มันเป็นเพราะการแสดงนี้ขึ้นเป็นผลแรกของวิธีที่จะได้รับรุ่น tmux
Derek 朕會功夫

อย่าเกลียดผู้เล่นอย่าเกลียดเกม
sixty4bit

13

หากต้องการค้นหาเวอร์ชันจริงของ tmux ที่กำลังทำงานอยู่คุณต้องค้นหา PID ของ tmux:

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

6

ในการรับเวอร์ชันของเซิร์ฟเวอร์ tmux คุณสามารถใช้ display-message

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

จะแสดงเวอร์ชันของเซิร์ฟเวอร์ (2.7 ในกรณีของฉัน)

-p จะกำหนดเอาต์พุตของ stdout เพื่อให้คุณสามารถเขียนสคริปต์ได้และ {version} สามารถเป็นอะไรก็ได้จากส่วน FORMATS ใน man page

ต่อไปนี้จะให้คุณสามารถเรียกใช้งานเซิร์ฟเวอร์ tmux ของคุณได้

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

/procสับเป็น Linux เท่านั้น (และอาจ Solaris ฯลฯ แต่ไม่ได้โดยทั่วไปแบบพกพา)
tripleee

ข้อความแสดงเป็นโซลูชั่นที่สมบูรณ์แบบสำหรับการรับเวอร์ชันเซิร์ฟเวอร์!
Ben Bernard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.