আমি কীভাবে সিটিটিএল-ডি দিয়ে টেমাক্সকে বেরিয়ে আসতে পারি?


30

আমি আমার সার্ভারে tmux ব্যবহার করি এবং সম্প্রতি আমি আমার ব্যয় পেয়েছি যে ctrl-d tmux থেকে প্রস্থান করবে এবং সমস্ত অধিবেশন তথ্য হারাবে, আমার উদ্দেশ্য কেবল ssh সেশনটি শেষ করার ছিল কিন্তু লক্ষ্য করতে ব্যর্থ হয়েছি আমি এখনও দেরি না হওয়া পর্যন্ত tmux এ আছি।

আমি সচেতন যে সিটিআরএল-ডি ব্যবহার করার সময় ভবিষ্যতে আমার সতর্ক হওয়া উচিত তবে আমি ভাবছিলাম যে দুর্ঘটনার কারণে সিটিআরএল-ডি-তে আঘাত করার সময় tmux থেকে বেরিয়ে আসার কোন উপায় আছে কি? একটি প্রম্পট, নিশ্চিতকরণ বা বিচ্ছিন্নতার মতো সমাধান ঠিক আছে।

উত্তর:


35

সুনির্দিষ্টভাবে বলতে গেলে, Ctrldপ্রস্থান করে না tmux, বরং একটি শেল। যদি সেই শেলটি tmuxসেশনে শেষ উইন্ডোটির একমাত্র ফলকে চলমান থাকে , সেশনটি শেষ হয় এবং tmuxক্লায়েন্টটি প্রস্থান করে।

Ctrldশেলটি থেকে বেরিয়ে আসা থেকে রক্ষা পেতে , আপনি IGNOREEOFশেল পরিবর্তনশীল সেট করতে পারেন , বা ignoreeofশেল বিকল্পটি সেট করতে পারেন । আপনার .bashrcফাইলে নিম্নলিখিতগুলির একটি রাখুন :

IGNOREEOF=10   # Shell only exists after the 10th consecutive Ctrl-d

set -o ignoreeof  # Same as setting IGNOREEOF=10

6
ধন্যবাদ, দুর্দান্ত। আমি শুধু tmux জন্য এটি প্রয়োজন তাই আমি ব্যবহার set-environment -g 'IGNOREEOF' 2মধ্যে .tmux.conf: এবং এখন আমি প্রস্থান করতে Ctrl-D আঘাত 3 বার প্রয়োজন এবং আমিও বার্তা সঙ্গে প্রতিটি সময় সতর্ক করছি Use "logout" to leave the shell.
Cas

7
আইজিএনরেইওফের পরিবেশের ভেরিয়েবল সেট করে দেওয়া zsh তে কোনও প্রভাব ফেলবে না, তবে "সেট-ও উপেক্ষা" বা "সেটপট উপেক্ষা করুন" করে।
স্যাজটপিপ

11

IGNOREEOFআমার জন্য কাজ করে নি তাই আমি ঠিক আবদ্ধ Ctrl+ + Dকরার detach.tmux.conf মধ্যে:

bind-key -n C-d detach

এর -nঅর্থ tmux উপসর্গের মতো কোনও পূর্বের পালানোর ক্রম দরকার নেই।


দেড় বছর পরে, IGNOREOFআমি zsh ব্যবহার করছি এর আগে আমার জন্য কাজ করেনি। setopt ignoreeofমধ্যে .zshrcকাজ করে। তবে tmux সোর্স এর জন্য আমাকে সমস্ত টিএমউक्स সেশন মেরে ফেলতে হয়েছিল .zshrc। হয়তো আমি .zshrctmux এর মধ্যে থেকে স্রোস করতে পারতাম ...
রোহমার

1
আমি এটি ব্যবহার করে চলেছি তবে এটির একটি বিরক্তিকর সীমাবদ্ধতা রয়েছে: এটি যে কোনও সিআরটিএল + ডি-তে আলাদা করে, এটি শেলের কাছে প্রেরণ করা হচ্ছে বা তেমন কিছু cat > some_new_file.txt
মিহাই ড্যানিলা

তবে, এটি আরও প্যানগুলি খোলে tmux এর পার্শ্ব প্রতিক্রিয়াযুক্ত কারণ এটি আপনাকে একটি ফলকটি বন্ধ করতে দেয় না ^D
মিঃ টাও

আপডেট যারা তাদের জন্য কেবল সর্বশেষ উইন্ডো / ফলকটি রাখতে চান:bind -n C-d if-shell -b 'USHELL="$(basename "$(getent passwd $USER | cut -d: -f7)")"; [ $(tmux list-windows | wc -l) -eq 1 -a $(tmux list-panes | wc -l) -eq 1 -a $(pstree $PPID | egrep "\\b$USHELL\$" | grep -o $USHELL | wc -l) -eq 1 ]' detach 'send C-d'
ফ্রেডরিক জাং

1
@ রোমার, প্রেস্টো আমাকে exec zshযখন zzrc সাথে খেলছি তখন tmux এর মধ্যে zsh পুনরায় আরম্ভ করতে শিখিয়েছি
ক্রি

6

এছাড়া chepner এর উত্তরটি আপনাকে সেটিং দ্বারা সম্পূর্ণরূপে ফাইলের শেষে পাঠানো টার্মিনাল বন্ধ করতে পারবেন eofকরার undefসঙ্গে stty:

stty eof undef

এর সাথে রিসেট করুন:

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