রিবুটের পরে tmux সেশন পুনরুদ্ধার করুন


255

কোনও টিএমউक्स সেশনটি সংরক্ষণ করার কোনও উপায় আছে কি? অন্য কথায়, আমি যদি কম্পিউটারটি পুনরায় চালু করি তবে আমি কি সর্বদা সেশনগুলি হারাব?


1
আপনি বিকল্প হিসাবে ডিস্কে হাইবারনেট করতে পারেন
ম্যাট ফ্রিম্যান

36
হাইবারনেটিং আপনার কম্পিউটারকে অবিচ্ছিন্নভাবে চালিয়ে যেতে, পুনরায় চালু না করার বিকল্প।
চিপনার

5
@ চেপনার: এমন দিনগুলি আছে যখন*** System restart required ***
কারাতেডোগ

2
@ কারাতেডোগ হ্যাঁ, সুতরাং আমরা উভয়ই সম্মত হই যে হাইবারনেশন আপনার পুনরায় বুট করার সময় টিএমএক্স সেশন হারাতে পারে না solution
চিপনার

উত্তর:


170

হ্যাঁ, আপনি যদি কম্পিউটারটি পুনরায় চালু করেন তবে আপনি সেশনগুলি হারাবেন। সেশনগুলি সংরক্ষণ করা যায় না। তবে এগুলি স্ক্রিপ্ট করা যায়। সর্বাধিক যা হয় তা হ'ল কিছু সেশনের স্ক্রিপ্ট করা যাতে আপনি সেগুলি পুনরায় তৈরি করতে পারেন। উদাহরণস্বরূপ, একটি অধিবেশন তৈরি করার জন্য এখানে একটি তুচ্ছ শেল স্ক্রিপ্ট রয়েছে:

#!/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

এটি কি করে তা এখানে। প্রথমে এটি পরীক্ষা করে থাকে যে সেই নামটি নিয়ে ইতিমধ্যে কোনও সেশন রয়েছে (এই ক্ষেত্রে, খুব আসল নাম "স্ক্রিপ্ট") টিএমউক্সের সেশন রয়েছে । এটি রিটার্ন কোডটি পরীক্ষা করে। যদি ইতিমধ্যে সেই নামটির সাথে একটি চলমান অধিবেশন থাকে তবে এটি "যদি" চক্র এড়িয়ে যায় এবং সরাসরি শেষ লাইনে চলে যায়, যেখানে এটি সেশনে সংযুক্ত থাকে। অন্যথায়, এটি একটি সেশন তৈরি করে এবং এটিতে কিছু কীগুলি প্রেরণ করে (কেবলমাত্র এখনই একটি এলোমেলো স্ক্রিপ্ট চালাচ্ছে)। তারপরে এটি "যদি" ব্লক থেকে বের হয় এবং সংযুক্ত থাকে।

এটি খুব তুচ্ছ নমুনা। সংযুক্তির আগে আপনি একাধিক উইন্ডো, পেন এবং এর মতো তৈরি করতে পারেন।

যদিও আপনি এটি চেয়েছিলেন একই জিনিস হবে না । আপনি যদি সেশনে কোনও পরিবর্তন করেন, উদাহরণস্বরূপ আপনি একটি উইন্ডোটির নাম পরিবর্তন করে এতে একটি নতুন ফলক তৈরি করেন, আপনি যদি সেই পরিবর্তনগুলি পুনরায় বুট করেন তবে অবশ্যই সংরক্ষণ করা হবে না।

কিছু সরঞ্জাম রয়েছে যা স্ক্রিপ্টিং সেশনগুলির প্রক্রিয়াটিকে সহজ করে দেয় যদিও আমি ম্যানুয়ালি জিনিসগুলি পছন্দ করি (আমি মনে করি এটি আরও বহুমুখী)। সেই সরঞ্জামগুলি হ'ল টিমাক্সিনেটর এবং টিমোসিল

আমার তথ্যের মূল উত্স ছিল "দ্য প্র্যাগমেটিক বুকশেল্ফ" টিএমাক্স বই।


1
আমি 5 টি ফাইল খোলার সাথে একটি সেশন পুনরুদ্ধার করতে চাইলে এমন কিছু হবে না বলে মনে হচ্ছে না। এটা করার কোন উপায় নেই?
চবি

4
Tmux আপনার চলমান প্রক্রিয়াগুলির অবস্থা সম্পর্কে কিছুই জানেন না। 'সেন্ড-কী' বা 'স্প্লিট-উইন্ডো' কমান্ডটি 'ভিআইএম ফাইল 1 ফাইল 2 ফাইল3' হতে পারে বা আপনার সম্পাদকের সেশন ম্যানেজমেন্ট (
ভিআইএম

tmux send-keys ...লাইনের উদ্দেশ্য কী ?
ডোমিনিকাস মোস্তাউসকিস

2
@ ডোমিনিকাস মোস্তাস্কিস যে আদেশটি নির্দিষ্ট অধিবেশনে কী প্রেসগুলি প্রেরণ করে । এটি সেশনে প্রবেশের মতো এবং কী-বোর্ড থেকে খুব কীগুলি ইনপুট করার মতো। এই ক্ষেত্রে, আপনি "~ / বিন / স্ক্রিপ্ট" প্রেরণ করুন এরপরে প্রবেশ করুন।
ডাকাতাইন

1
সমন্বয় some command; if [ $? != 0 ]; then .....লিখতে (এবং পড়তে) আরো সহজ হয়: if ! some command; then .....
fonini

117

আমি একটি সরল বাশ স্ক্রিপ্ট লিখেছিলাম যা প্রতিটিতে টিমাক্স সেশন, উইন্ডো এবং বর্তমান কার্যক্ষম ডিরেক্টরিকে বহাল রাখে।

এটিকে ম্যানুয়ালি বা পর্যায়ক্রমে ক্রোন থেকে কল করুন (কারণ আপনি ভুলে যেতে পারেন):

tmux-session save

এটা লিখতে হবে ~/.tmux-session। পুনরায় বুট করার পরে এগুলি পুনরুদ্ধার করুন:

tmux-session restore

আমি এটি কয়েকশ লাইনের দীর্ঘ পার্ল স্ক্রিপ্টের চেয়ে অনেক বেশি ভাল পাই।


আপনার যদি একটি টিএমউক্স সেশন থাকে তবেই এটি কি?
সিরিয়েনার্থস

86

আমি একটি tmux প্লাগইন লিখেছিলাম যা আপনাকে সম্পূর্ণ টিএমউक्स পরিবেশ সংরক্ষণ করতে সক্ষম করে এবং পরে এটি পুনরুদ্ধার করতে সক্ষম করে। এটি সত্যই বিশদ হওয়ার জন্য প্রচেষ্টা করে যাতে আপনার মনে হয় যে আপনি কখনই টেমুক্স ছাড়েন না।

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

আপডেট: এখন একটি tmux-Continum প্লাগইন রয়েছে যা tmux পরিবেশের স্বয়ংক্রিয় পটভূমি সংরক্ষণ করে। Ptionচ্ছিকভাবে এটি কম্পিউটার পুনরায় বুটের পরেও * স্বয়ংক্রিয়ভাবে tmux env পুনরুদ্ধার করে।


ঠিক একই লিঙ্কটি দিয়ে আমি আমার "উত্তর" পোস্ট করে যেমন দেখলাম - "দো'হ!" আপনার প্লাগইন কী বলেছিল তা মনে করার চেষ্টা করার সময় এটি পাওয়া গেছে।
ফটসকাত

এই প্লাগইনটি খারাপ নয়, তবে এটি আমার সমস্ত প্রোগ্রাম পুনরুদ্ধার করে না। আপনার আরও দস্তাবেজগুলি পড়বে এবং সম্ভবত গিথুবে একটি সমস্যা জমা দেবে।
অ্যারেন

@ আরন প্রোগ্রামের উপর নির্ভর করে এর জন্য প্রোগ্রামের চেকপয়েন্টিং লাগতে পারে। পরিবর্তে, আমি আপনার প্রোগ্রামগুলি পুনরুদ্ধার করার জন্য পরামর্শ দিচ্ছি - ভিআইএম ইত্যাদির জন্য ধ্রুবক .vimrc ফাইল এবং কার্সার অবস্থানগুলি - এবং tmux pane_current_command মানুষের মতো প্রোগ্রামগুলির জন্য সঞ্চয় করে যা পুনরায় খোলা যেতে পারে। চেকপয়েন্টিং আমার মতে খুব জটিল, তবে যে কোনও ক্ষেত্রে সন্ধান করা মূল্যবান।
জন পি

@ ব্রুনো-সুটিক আপনার প্লাগইন (tmux- পুনরুত্থান) এবং tmux-coninuum এর মধ্যে পার্থক্য কী?
নিঃসঙ্গ

এটির কাজ করার জন্য বর্তমানে আমার এই জাতীয় ধারাবাহিকতাটির প্রয়োজন ছিল github.com/tmux-plugins/tmux-continuum/blob/master/docs/…
rofrol

10

tmuxinator রুবিতে লেখা একটি সরঞ্জাম যা সহজেই tmux সেশন তৈরি ও পরিচালনা করতে ব্যবহার করা যেতে পারে। এটি একটি প্রকল্প তৈরি করতে ব্যবহৃত হতে পারে, যা পরে tmux সেশন হিসাবে ইনস্ট্যান্ট করা যেতে পারে।


5

এখানে পাওয়া এই আংশিক সমাধান বিবেচনা করুন

Tmux সেশনের সার্ভার পুনরায় বুট করার পরে স্থিতি ধরে রাখতে লেখক একটি ফাংশন তৈরি করে যা tmux সেশনের ইতিহাস সংরক্ষণ করে।


17
আপনি কি দয়া করে তাদের পোস্ট পোস্ট করতে পারেন? লিঙ্কগুলি পচে যেতে পারে।
সিপিস্ট

1
@ ক্যাপাস্ট: এটি সত্য, তবে মন্তব্যগুলিও পচে যেতে পারে। উভয়ই দিতে সেরা :)
ড্যানিয়েলপপস

6
@ গ্রেগ আপনার লিঙ্কটি 404
রোফ্রোল

0

আমি সেশন পুনরুদ্ধার করার জন্য https://github.com/jimeh/tmuxifier সফলভাবে ব্যবহার করি । এটি রুবি ছাড়া ইনস্টল করা যেতে পারে, কেবল গিট ব্যবহার করে।

নমুনাগুলি হ'ল স্ব স্ব ব্যাখ্যাযোগ্য, যেমন: https://github.com/jimeh/tmuxifier/blob/master/example/example.session.sh

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.