मैं वर्तमान में चल रहे tmux के संस्करण का कैसे पता लगा सकता हूँ?


138

मुझे पता है कि मैं tmux -Vउसी के संस्करण को खोजने के लिए चला सकता tmuxहूं PATH, लेकिन मैं उस संस्करण को कैसे प्राप्त कर सकता हूं tmuxजो वर्तमान में चल रहा है ?


124
प्रियtmux -V
गोगलर्स

जवाबों:


88

सबसे स्पष्ट है, लेकिन कंसोल में इस कमांड को निष्पादित करने का 100% सही तरीका नहीं है

$ tmux -V

और tmux 2.9aवर्तमान में चल रहे tmux के संस्करण के साथ इस तरह से आउटपुट प्राप्त करते हैं । 99% मामलों में यह पर्याप्त है, लेकिन सूक्ष्म बारीकियां हो सकती हैं।

कमांड tmux -V आपके PATH वैरिएबल के अंदर / usr / bin / tmux या किसी अन्य निर्देशिका में स्थापित tmux का संस्करण लौटाएगा। यदि आपके पास पहले से चल रहा tmux है, तो संभव है कि tmux को दूसरे संस्करण के बाइनरी से और अलग-अलग जगह से शुरू किया जा सकता है (उदाहरण के लिए, tmux से शुरू किया जा सकता है /home/user/bin/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 सर्वर के आईडी (PID) को दर्शाया गया है।

Tmux सर्वर की PID प्राप्त करने के बाद, आप कमांड चला सकते हैं


$ lsof -p 19701

CURRENTLY RUNNING 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 के रूप में एक ही उत्पादन प्राप्त करने के लिए

जब आप द्विआधारी CURRENTLY RUNNING के लिए रास्ता पा लेते हैं, (मेरे मामले में, यह था /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
एलेक्सावर

55
सिर्फ रन tmux -V, उबंटू और ओएसएक्स पर परीक्षण किया गया
मौरिसियो पोप

1
इस विधि से आपको पहले tmux निष्पादित करना होगा; इसके बजाय आप which tmuxरास्ते का पता लगाने के लिए इस्तेमाल कर सकते हैं
शिव

1
@ शिव - प्रश्न लेखक ने कहा "वर्तमान में चल रहे tmux का संस्करण?" - इसलिए tmux पहले से ही चल रहा है
vodolaz095

148

जैसा कि एक टिप्पणी में बताया गया है, tmux -Vसंस्करण लौटाता है:

$ tmux -V
# tmux 1.8

Centos 7 और OSX 10.11.5 पर परीक्षण किया गया।


2
यह चयनित उत्तर होना चाहिए। अमेज़ॅन लिनक्स पर इसका परीक्षण भी किया गया।
ब्रैडी डॉवलिंग

7
मुझे नहीं लगता कि यह सवाल का जवाब देता है। मुझे यकीन नहीं है कि इसे इतना उच्च दर्जा क्यों दिया गया है। वह कमांड मेरे रास्ते में जो भी tmux है उसका संस्करण लौटाता है
मात्रा

4
यह इसलिए है क्योंकि यह कैसे tmux संस्करण प्राप्त करने के पहले परिणाम के रूप में दिखाता है ।
डेरेक 會 會 ere

खिलाड़ी से नफरत न करें, खेल से नफरत करें
साठ4bit

13

चलने वाले tmux का वास्तविक संस्करण खोजने के लिए, आपको tmux का PID खोजना होगा:

pgrep tmux

इस जानकारी के साथ, आप चलाकर संस्करण की जाँच कर सकते हैं:

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

यदि सूचीबद्ध tmux फ़ाइल के बगल में (हटाए गए) नहीं है, तो आप बस उस फ़ाइल को a के साथ चला सकते हैं -V

यदि यह उन फ़ाइलों में परिणाम करता है जो "(हटाई गई)" हैं, तो आप एक पुराना, अनइंस्टॉल किया गया संस्करण चला रहे हैं। यदि आप लिनक्स पर हैं, तो आप यह पता लगा सकते हैं कि यह क्या चल रहा है:

/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

या यदि आप लिनक्स पर हैं, तो यह हमेशा काम करता है:

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

6

Tmux सर्वर का संस्करण प्राप्त करने के लिए आप प्रदर्शन-संदेश का उपयोग कर सकते हैं।

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

सर्वर का संस्करण दिखाएगा (मेरे मामले में 2.7)

-p स्टडआउट के आउटपुट को निर्देशित करेगा ताकि आप इसके साथ स्क्रिप्ट कर सकें और {पेज} मैन पेज में FORMATS सेक्शन से कुछ भी हो सकता है।

निम्नलिखित आपको अपने tmux सर्वर का निष्पादन योग्य देगा।

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

/proc; हैक केवल (लेकिन आम तौर पर पोर्टेबल नहीं है और संभवत: सोलारिस आदि) लिनक्स है
tripleee

प्रदर्शन-संदेश सर्वर संस्करण प्राप्त करने के लिए सही समाधान है!
बेन बर्नार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.