Linux tmux गाइड: बैकग्राउंड सेशन और स्क्रीन स्प्लिटिंग

कार्यप्रणाली और परिचय

tmux (टर्मिनल मल्टीप्लेक्सर) लिनक्स सर्वर प्रबंधन के लिए एक अपरिहार्य टूल है, जो SSH कनेक्शन अचानक कट जाने पर भी बैकग्राउंड टास्क को निर्बाध जारी रखता है। यह एकल कंसोल विंडो को कई स्वतंत्र हिस्सों (Panes) में विभाजित करने की सुविधा भी देता है। प्रस्तुत आलेख में सेशन, विंडो और पेन की त्रिस्तरीय वास्तुकला तथा इसके आवश्यक कमांड्स के आंतरिक तंत्र को व्यावहारिक रूप से समझाया गया है।

1. tmux पैकेज इंस्टॉलेशन और वातावरण सेटअप

सिस्टम रिपॉजिटरी इंडेक्स को आधुनिक स्थिति में लाने के बाद APT पैकेज मैनेजर के माध्यम से tmux को इंस्टॉल किया जाता है।

sudo apt-get update -qq && sudo apt-get install -y tmux

स्थापना सफल रही है या नहीं, इसकी पुष्टि tmux -V निष्पादित करके वर्तमान बिल्ड रिलीज देखकर की जाती है।
⚙️ [प्रमुख विकल्प]

-V : वर्तमान में संस्थापित tmux संस्करण की जानकारी प्रदर्शित करता है।
-2 : टर्मिनल को 256 कलर मोड में काम करने के लिए बाध्य करता है।
-u : UTF-8 कैरेक्टर एन्कोडिंग सपोर्ट को अनिवार्य रूप से सक्रिय करता है।
-f : डिफ़ॉल्ट कॉन्फ़िगरेशन के स्थान पर किसी विशेष पाथ की फ़ाइल लोड करता है।
-L : मानक सॉकेट के बजाय एक कस्टम सॉकेट नाम निर्दिष्ट कर स्वतंत्र वर्कस्पेस बनाता है।

tmux -V

2. बैकग्राउंड सेशन निर्माण और उनकी सूची का प्रबंधन

tmux new-session -d -s work-session कमांड वर्तमान सक्रिय शेल को बदले बिना सीधे पृष्ठभूमि में work-session नाम से एक नया वर्कस्पेस तैयार करता है।
डिटैच्ड मोड (-d) का चयन करने से चल रहे टर्मिनल कार्य में कोई व्यवधान नहीं पड़ता और समानांतर रूप से एक स्वतंत्र वातावरण आरंभ हो जाता है।

tmux new-session -d -s work-session

tmux new-session -d -s monitor-session 'top' कमांड monitor-session सेशन बनाते ही उसके अंदर स्वतः top यूटिलिटी को निष्पादित कर देता है।
जब किसी लॉन्ग-रनिंग प्रोसेस या रियल-टाइम सिस्टम मॉनिटरिंग टूल को बिना किसी मैनुअल हस्तक्षेप के शुरू से ही बैकग्राउंड में चलाना हो, तब यह कमांड अत्यंत लाभकारी होती है।

tmux new-session -d -s monitor-session ’top’

वर्तमान में होस्ट पर चल रहे समस्त tmux सेशन्स का विवरण देखने के लिए tmux list-sessions का उपयोग किया जाता है।
परिणाम दर्शाता है कि पूर्व में बैकग्राउंड मोड में बनाए गए monitor-session और work-session दोनों ही 1-1 विंडो के साथ सर्वर पर सुचारू रूप से सक्रिय हैं।

tmux list-sessions

3. विंडो विभाजन और पेन (Pane) संरचना का विश्लेषण

tmux split-window -t work-session -h कमांड work-session की सक्रिय विंडो को क्षैतिज रूप से (दाएं-बाएं) विभाजित करके एक नया पेन जोड़ता है।
स्क्रीन दो लंबवत ब्लॉकों में बंट जाती है, जिससे मुख्य वर्कस्पेस के ठीक बराबर में एक स्वतंत्र शेल उपलब्ध हो जाता है।

tmux split-window -t work-session -h

tmux split-window -t work-session -v कमांड सक्रिय पेन को ऊर्ध्वाधर रूप से (ऊपर-नीचे) दो भागों में विभाजित करता है।
पूर्ववर्ती विभाजन के बाद अब निचला भाग पुनः विभाजित हो जाता है, जिससे कुल मिलाकर 3 अलग-अलग सक्रिय पेन का सेट तैयार हो जाता है।

tmux split-window -t work-session -v

tmux list-windows -t work-session कमांड सेशन से संबद्ध विंडो की संख्या तथा स्क्रीन लेआउट विन्यास को सूचीबद्ध करता है।
आउटपुट से यह पुष्टि होती है कि विंडो 0 (bash) में वर्तमान में 3 पेन्स (3 panes) संरचित हैं और पूरा संयुक्त ढांचा सक्रिय (active) स्थिति में है।

tmux list-windows -t work-session

tmux list-panes -t work-session कमांड प्रत्येक व्यक्तिगत पेन के आकार और आंतरिक स्थिति का सूक्ष्म विवरण प्रस्तुत करता है।
प्रदर्शित रिपोर्ट में तीनों पेनों (0, 1, 2) के आयाम और उनके सिस्टम आइडेंटिफ़ायर (%0, %2, %3) देखे जा सकते हैं, जिसमें पेन 2 वर्तमान में फ़ोकस्ड (active) स्थिति में स्थित है।

tmux list-panes -t work-session

4. रिमोट की-स्ट्रोक ट्रांसमिशन और सेशन की समाप्ति

tmux send-keys -t work-session.0 'echo "tmux background execution test"' C-m कमांड work-session के पेन 0 में स्ट्रिंग और रिटर्न की (C-m) को बाहर से सीधे इंजेक्ट करता है।
सेशन में प्रत्यक्ष रूप से प्रवेश (attach) किए बिना भी पृष्ठभूमि में चल रहे विशिष्ट पेन को सीधे कमांड भेजकर तुरंत रन कराया जा सकता है।

tmux send-keys -t work-session.0 ’echo “tmux background execution test”’ C-m

tmux capture-pane -pt work-session.0 कमांड पेन 0 के टर्मिनल बफ़र में दर्ज आउटपुट को कैप्चर करके वर्तमान कंसोल पर प्रिंट करता है।
इसके माध्यम से यह सत्यापित किया जाता है कि रिमोटली भेजा गया echo निर्देश पेन 0 के भीतर सफलतापूर्वक निष्पादित हुआ और उसका परिणाम बफ़र में संग्रहित है।

tmux capture-pane -pt work-session.0

tmux kill-session -t work-session कमांड लक्षित work-session और उसके अंतर्गत आने वाले सभी विंडो एवं पेन को नष्ट कर देता है।
कार्य समाप्त होने पर अनावश्यक सेशन को बंद करके सिस्टम मेमोरी और प्रोसेस स्लॉट्स को मुक्त करने के लिए यह आवश्यक चरण है।

tmux kill-session -t work-session

tmux kill-server कमांड बैकग्राउंड में चल रहे मुख्य tmux सर्वर डेमन और उसके सभी सक्रिय सेशन्स को एक साथ बंद कर देता है।
यह सिस्टम पर चालू सभी समानांतर tmux परिवेशों को पूरी तरह समाप्त करने का सीधा उपाय है।

tmux kill-server

tmux ls 2>&1 || echo '모든 tmux 세션이 정상 정리되었습니다.' कमांड यह सुनिश्चित करने के लिए चलाई जाती है कि सिस्टम में कोई भी अवशिष्ट tmux प्रोसेस शेष तो नहीं है।
सक्रिय सर्वर न मिलने पर लौटने वाले एरर कोड को पकड़कर वैकल्पिक संदेश प्रिंट किया जाता है, जो यह स्पष्ट करता है कि सभी सेशन्स पूरी तरह बंद हो चुके हैं।

tmux ls 2>&1 || echo ‘모든 tmux 세션이 정상 정리되었습니다.’

इस प्रकार हमने tmux के मूलभूत सिद्धांतों, बैकग्राउंड सेशन प्रबंधन और टर्मिनल स्क्रीन विभाजन की कार्यशैली को समझा।
इन आवश्यक कमांड्स का अभ्यास करके आप लिनक्स सर्वर पर अपने दैनिक कार्यों को अधिक संगठित, सुरक्षित और उत्पादक बना सकते हैं।