क्या मैं देख सकता हूं कि tmux सत्र में क्या चल रहा है?


16

अक्सर मैं tmuxएक कार्य शुरू करने के लिए उपयोग करूंगा जो थोड़ी देर के लिए चल रहा होगा। मैं समय-समय पर वापस जाऊंगा और इसका उपयोग करके जांच करूंगा tmux -aऔर फिर इसे डिस्कनेक्ट कर दूंगा यदि यह अभी भी पूरा नहीं हुआ है और बाद में फिर से जांचें।

क्या पूरी तरह से संलग्न किए बिना सत्र में क्या चल रहा है, इसका एक संक्षिप्त स्नैपशॉट देखने का कोई तरीका है? मैं tailउत्पादन की अंतिम बिट प्राप्त करने के लिए सत्र पर सैद्धांतिक रूप से कुछ करने की तलाश कर रहा हूं (लेकिन अगर मैं आउटपुट की एक कॉपी के साथ एक और फ़ाइल बनाने से बच सकता हूं)

शायद अटैच करना और उसे तुरंत अलग करना भी काम करेगा। मैं कीस्ट्रोक्स को बचाने का प्रयास कर रहा हूं, शायद ऐसे कमांड को दूरस्थ रूप से निष्पादित किया जा सकता है,
अर्थात ssh root@server tmux --tail?

जवाबों:


17

मुझे लगता है कि capture-paneआपकी आवश्यकताओं के अनुरूप हो सकता है:

tmux capture-pane -pt "$target-pane"

(फलक निर्दिष्ट करने के तरीकों के लिए मैन पेज में "लक्ष्य-फलक" देखें)

डिफ़ॉल्ट रूप से, वह आदेश निर्दिष्ट फलक की वर्तमान सामग्री को डंप कर देगा। आप -Sऔर -Eविकल्प (प्रारंभ और अंत पंक्ति संख्या) का उपयोग करके लाइनों की एक श्रृंखला निर्दिष्ट कर सकते हैं : पहली पंक्ति 0 है, और नकारात्मक संख्याएं फलक के "स्क्रॉल बैक" इतिहास से लाइनों को संदर्भित करती हैं। तो जोड़ने -S -10से आपको इतिहास की सबसे हालिया दस लाइनें और फलक की वर्तमान सामग्री मिल जाती है।

tmux capture-pane -pt "$target-pane" -S -10

-pविकल्प 1.8 में जोड़ा गया है। यदि आप पहले वाला संस्करण चला रहे हैं तो आप इसके बजाय यह कर सकते हैं:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

लेकिन उन अर्धविरामों पर ध्यान दें यदि आप इस कमांड को जारी कर रहे हैं sshक्योंकि दूरस्थ शेल शेल व्याख्या का एक अतिरिक्त स्तर जोड़ देगा (अर्धविराम को अंतिम tmux कमांड में तर्क के रूप में पारित करने की आवश्यकता है , तो उन्हें स्थानीय या दूरस्थ द्वारा व्याख्या नहीं की जानी चाहिए। शेल)।


1
आप वास्तव में इस टैग के स्वामी हैं ... महान उत्तर (हमेशा की तरह)।
जसोनव्रीयन

कोई भी -eएएनएसआई से बच सकता है (रंग वगैरह)। यह एक अच्छी महामारी-pet
उड़ती भेड़

1

ज़रुरी नहीं। एक दृष्टिकोण जो मन में आता है वह आपकी लंबी चलने की प्रक्रिया ( $lrp) शुरू करना है और फिर, समय-समय पर, list-windowsप्रासंगिक सत्र के लिए फिर से संलग्न किए बिना ।

कुछ बिंदु पर, $ lrp के साथ tmux विंडो का नाम डिफ़ॉल्ट रूप से वापस बदल जाएगा, आमतौर पर आपका शेल, और आप देख पाएंगे कि $ lrp पूरा हो गया है।

┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)

अच्छा विचार। मैं अभी भी इसके बारे में उलझन में हूँ $lrp- क्या वह एक चर था जिसका आपने उल्लेख किया था? क्या आप इसका उदाहरण दे सकते हैं कि इसका उपयोग कैसे किया जाएगा? $lrpसूचीबद्ध नहीं देखाman tmux
cwd

@cwd यह आपकी प्रक्रिया के लिए सिर्फ एक प्लेसहोल्डर है (कहो rsyncया जो भी हो ... :)
jasonwryan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.