सवाल रीबूट के बाद tmux सत्र पुनर्स्थापित करें


क्या tmux सत्र को सहेजने का कोई तरीका है? दूसरे शब्दों में, अगर मैं कंप्यूटर को रीबूट करता हूं, तो क्या मैं हमेशा सत्र खो दूंगा?


224
2018-06-21 04:17


मूल


आप एक विकल्प के रूप में डिस्क पर हाइबरनेट कर सकते हैं - Mâtt Frëëman
हाइबरनेटिंग आपके कंप्यूटर को निरंतर चलने का विकल्प है, रीबूट नहीं कर रहा है। - chepner
@chepner: उन दिनों में हैं *** System restart required *** - karatedog
@karatedog हां, इसलिए हम दोनों सहमत हैं कि हाइबरनेशन रीबूट पर आपके tmux सत्र को खोने का समाधान नहीं है। - chepner


जवाब:


हां, अगर आप कंप्यूटर को रीबूट करते हैं तो आप सत्र खो देंगे। सत्र सहेजे नहीं जा सकते हैं। लेकिन, उन्हें लिखित किया जा सकता है। वास्तव में सबसे ज्यादा क्या करना है लिपि कुछ सत्र ताकि आप उन्हें फिर से बना सकें। उदाहरण के लिए, सत्र बनाने के लिए यहां एक छोटी शेल स्क्रिप्ट है:

#!/bin/zsh                                                                                                   

SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null

if [ $? != 0 ] 
 then
    tmux new-session -s $SESSIONNAME -n script -d
    tmux send-keys -t $SESSIONNAME "~/bin/script" C-m 
fi

tmux attach -t $SESSIONNAME

यह है कि यह क्या करता है। सबसे पहले, यह जांचता है कि उस नाम के साथ पहले से कोई सत्र है (इस मामले में, मूल नाम "स्क्रिप्ट" है) टीएमयूक्स सत्र है। यह रिटर्न कोड की जांच करता है। यदि पहले से ही उस नाम के साथ एक चालू सत्र है, तो यह "अगर" चक्र छोड़ देता है और सीधे अंतिम पंक्ति पर जाता है, जहां यह सत्र से जुड़ा होता है। अन्यथा, यह एक सत्र बनाता है और इसमें कुछ चाबियाँ भेजता है (अभी के लिए एक यादृच्छिक स्क्रिप्ट चला रहा है)। फिर यह "अगर" ब्लॉक से बाहर निकलता है और संलग्न करता है।

यह है एक बहुत तुच्छ नमूना। आप संलग्न करने से पहले कई खिड़कियां, पैन और जैसे बना सकते हैं।

यह करेगा नहीं हालांकि, वही बात हो जिसे आपने पूछा था। यदि आप सत्र में कोई भी परिवर्तन करते हैं, उदाहरण के लिए आप एक विंडो का नाम बदलते हैं और इसमें एक नया फलक बनाते हैं, यदि आप उन परिवर्तनों को रीबूट करते हैं तो निश्चित रूप से सहेजा नहीं जाएगा।

ऐसे कुछ टूल हैं जो स्क्रिप्टिंग सत्रों की प्रक्रिया को कम करते हैं, हालांकि मैं चीजों को मैन्युअल रूप से करना पसंद करता हूं (मुझे लगता है कि यह अधिक बहुमुखी है)। वो उपकरण हैं Tmuxinator तथा Teamocil

सूचनाओं का मेरा मुख्य स्रोत "द प्रोगैमैटिक बुक्सहेल्फ़" टीएमयूक्स पुस्तक था।


146
2018-06-22 08:58



अगर मैं 5 फाइलों के साथ एक सत्र को पुनर्स्थापित करना चाहता हूं तो ऐसा कुछ भी नहीं होगा। ऐसा करने का कोई तरीका नहीं है? - chovy
टीएमयूक्स उन प्रक्रियाओं की स्थिति के बारे में कुछ नहीं जानता जो आप चल रहे थे। आप स्क्रिप्ट कर सकते हैं वही 'send-keys' या 'split-window' कमांड होने से खुली फ़ाइलें 'vim file1 file2 file3' हो या अपने संपादक के सत्र प्रबंधन (vim -S और जैसा) देखें - bloy
इसका उद्देश्य क्या है tmux send-keys ... लाइन? - Dominykas Mostauskis
@DominykasMostauskis वह आदेश भेजता है निर्दिष्ट सत्र में महत्वपूर्ण प्रेस। यह सत्र में प्रवेश करने और कीबोर्ड से उन बहुत चाबियाँ इनपुट करने जैसा है। इस मामले में, आप एंटर के बाद "~ / bin / script" भेजते हैं। - Dakatine
क्या मेरे पास उपयोगकर्ता नाम और पास के साथ स्क्रिप्ट लॉगिन है? (मुझे पता है कि यह सुरक्षित नहीं है सिर्फ यह जानना चाहता है कि सिस्टम के लिए यह संभव है जहां मुझे सुरक्षा के बारे में परवाह नहीं है लेकिन अभी भी उपयोगकर्ता और पास होना है)। - Jas


मैंने एक साधारण बैश लिपि लिखी जो प्रत्येक में खुले tmux सत्र, विंडोज़ और वर्तमान कामकाजी निर्देशिका बनी रहती है।

क्रॉन से मैन्युअल रूप से या समय-समय पर इसे कॉल करें (क्योंकि आप भूल सकते हैं):

tmux-session save

यह लिखेंगे ~/.tmux-session। रीबूट के बाद उन्हें पुनर्स्थापित करें:

tmux-session restore

मुझे यह कई सौ लाइन लंबी पर्ल स्क्रिप्ट से काफी बेहतर लगता है।


106
2017-07-04 22:37





मैंने एक tmux प्लगइन लिखा है जो आपको पूर्ण tmux वातावरण को सहेजने और बाद में इसे पुनर्स्थापित करने में सक्षम बनाता है। यह वास्तव में विस्तृत होने का प्रयास करता है ताकि आपको एहसास हो कि आपने टीएमयूक्स को कभी नहीं छोड़ा।

https://github.com/tmux-plugins/tmux-resurrect

अद्यतन: अब एक है tmux-सातत्य प्लगइन जो स्वचालित पृष्ठभूमि करता है tmux पर्यावरण की बचत करता है। वैकल्पिक रूप से यह स्वचालित रूप से * स्वचालित रूप से कंप्यूटर रीबूट के बाद tmux env को पुनर्स्थापित करता है।


71
2017-08-30 09:16



जैसे ही मैंने एक ही लिंक के साथ अपना "उत्तर" पोस्ट किया, मैंने देखा - "डूह!" यह याद रखने की कोशिश करते हुए यह पाया कि आपकी प्लगइन क्या कहलाती थी। - phatskat
यह प्लगइन खराब नहीं है, लेकिन यह मेरे सभी कार्यक्रमों को पुनर्स्थापित नहीं किया है। आपके अधिक दस्तावेज़ पढ़ेंगे और शायद गितब पर एक समस्या सबमिट करेंगे। - Arne
@Arne कार्यक्रम के आधार पर, इसे प्रोग्राम चेकपॉइंटिंग की आवश्यकता हो सकती है। इसके बजाए, मैं आपके प्रोग्राम को पुनर्स्थापित करने के लिए कॉन्फ़िगर करने की अनुशंसा करता हूं - लगातार। Vimrc फ़ाइलों और vim के लिए कर्सर की स्थिति, आदि - और tmux pane_current_command को ऐसे प्रोग्राम के लिए संग्रहीत करना जिन्हें पुन: खोला जा सकता है। चेकपॉइंटिंग मेरी राय में बहुत जटिल है, लेकिन किसी भी मामले में देखने लायक है। - John P
@ ब्रूनो-सूटिक आपकी प्लगइन (tmux-resurrect) और tmux-coninuum के बीच अंतर क्या है? - lony


tmuxinator रूबी में लिखा गया एक उपकरण है, जिसका उपयोग आसानी से टीएमयूक्स सत्र बनाने और प्रबंधित करने के लिए किया जा सकता है। इसका उपयोग एक प्रोजेक्ट बनाने के लिए किया जा सकता है, जिसे बाद में टीएमयूक्स सत्र के रूप में तुरंत चालू किया जा सकता है।


10
2018-06-26 17:40





इस आंशिक समाधान पर विचार करें यहाँ

लेखक एक ऐसा फ़ंक्शन बनाता है जो सर्वर रीबूट के बाद tmux सत्र की स्थिति को बनाए रखने के लिए tmux सत्र का इतिहास सहेजता है।


5
2018-02-02 21:54



क्या आप कृपया जो कुछ कहें पोस्ट कर सकते हैं? लिंक सड़ांध कर सकते हैं। - cpast
@cpast: यह सच है, लेकिन टिप्पणियां भी सड़ सकती हैं। दोनों को देने के लिए सर्वश्रेष्ठ :) - danielpops