কমান্ডটি সম্পূর্ণ হলে ফলক / উইন্ডোটি বন্ধ হওয়া থেকে বিরত রাখুন - tmux


33

আমার tmux.confফাইলে আমি এটি উইন্ডো খোলার জন্য, তাদের নামকরণের জন্য, সেটআপ পেনগুলি ইত্যাদির জন্য কনফিগার করেছি ... ইত্যাদি etc

যাইহোক আমার কাছে একটি সমস্যা হ'ল যদি প্যানগুলির মধ্যে একটি যদি কমান্ড প্রবর্তন করে ls, তবে বলি , কমান্ডটি (তাত্ক্ষণিকভাবে) শেষ হওয়ার পরে ফলকটি নিজেই বন্ধ হয়ে যায়। এই আচরণ রোধ করার কোনও উপায় আছে কি? অথবা কোনও কমান্ড শেষ হওয়ার পরে এটি কোনও সাধারণ শেলের কাছে পড়েছে?

আমি ধরে নিচ্ছি যে ফলকটি চালু হওয়ার সময় আমার শেল -> কমান্ড চালানো দরকার, তবে কীভাবে তা বুঝতে পারি তবে আমি তাকে ধিক্কার জানাতে পারি। আমি এই সমস্যার জন্য কিছুটা গুগল করেছি তবে ছোট হয়ে এসেছি।

উত্তর:


22

আপনার কাছে কয়েকটি বিকল্প রয়েছে।

  1. lsআপনার উইন্ডোতে চলার পরিবর্তে , একটি শেল চালান, তারপরে শেল কীস্ট্রোকগুলি সম্পাদন করতে প্রেরণ করুন:

    tmux start-server  
    tmux new-session -d -s session  
    tmux new-window -t session:1  
    tmux send-keys -t session:1 ls C-m
    
  2. আপনার অন্যান্য কমান্ডগুলি চালুর পরে ব্যাশ শেল দিয়ে নিজেকে ছেড়ে চলে যেতে আপনি এমনভাবে কমান্ডের সিক্যুয়েন্সে লাঞ্চ করতে পারেন:

    tmux start-server  
    tmux new-session -d
    tmux new-window 'ls;bash -i'
    
  3. প্যানগুলি প্রক্রিয়াটি শেষ হয়ে যাওয়ার পরেও জীবন্ত রাখার বিকল্পের জন্য বিশদ বিবরণের জন্য জেসনওয়ারিয়ান এর উত্তর দেখুন remain-on-exitযাতে আপনি আউটপুট পর্যালোচনা করতে পারেন।

  4. কিছু কমান্ডের আউটপুট যদি একবার দেখার মতো হয় তবে তা সতেজ হওয়া উপযুক্ত। আপনি যদি কোনও কিছুর আউটপুট নিরীক্ষণ করে থাকেন তবে watchপর্যায়ক্রমে আপনি নতুন আউটপুট পেতে পারেন । এটি পেনগুলির সাথে দুর্দান্তভাবে খেলতে হবে tmux:

    tmux start-server  
    tmux new-session -d
    tmux new-window 'watch -n 60 ls'
    

ধন্যবাদ মানুষ! দুর্দান্ত উত্তর, 2 নম্বর এবং 4 নম্বরটি ঠিক সেই জন্য যা আমি কাজ করেছিলাম তবে 1 নম্বরটিও দুর্দান্ত বিকল্প হিসাবে মনে হচ্ছে। সমস্ত সহায়তার জন্য ধন্যবাদ, এটি সত্যিই প্রশংসা (আপনি উভয়)
স্টি

1
# 1 এর সুবিধাটি হ'ল কমান্ডটি শেল ইতিহাসে থেকে যায় এবং সহজেই আবার কার্যকর করা যায়। যদি কমান্ডটি বড় এবং কুরুচিপূর্ণ ছিল তবে এটি খুব সহায়ক।
goertzenator

1
এটি start-serverআদেশ ছাড়াই আমার পক্ষে কাজ করছে , আমি মনে করি প্রয়োজন হলে এটি স্বয়ংক্রিয়ভাবে শুরু হয়ে গেছে is এটিকে তবুও এটিকে স্পষ্টভাবে কল করার কোনও সুবিধা আছে কি?
লুয়েটর

1
@ লিউটার আমি মনে করি যে tmuxএই উত্তরটি লেখার পরে কোনওটি পাওয়া না গেলে কোনও সার্ভার স্বয়ংক্রিয়ভাবে চালু করা যুক্ত করা যেতে পারে । আপনার সংস্করণটি যদি প্রয়োজন হয় তবে একটি সার্ভার প্রক্রিয়া উত্সাহিত করে আমি কোনও সুবিধা জানি না।
কালেব

13

আপনি remain-on-exitবিকল্পটি ব্যবহার করতে পারেন :

پاتې-অন-প্রস্থান [অন | বন্ধ]
এতে থাকা প্রোগ্রামটি যখন প্রস্থান করবে তখন এই পতাকা সেটযুক্ত একটি উইন্ডো ধ্বংস হবে না। উইন্ডোটি রিসন-উইন্ডো কমান্ডের সাথে পুনরায় সক্রিয় করা যেতে পারে।

পুনঃনির্ধারণ প্রক্রিয়াটি সহজ করার জন্য, আপনি এটি কোনও কীতে আবদ্ধ করতে চাইতে পারেন:

bind-key R respawn-window

এটি নিশ্চিত করবে যখন প্রোগ্রামগুলি প্রস্থান করবেন তখন আপনাকে মৃত উইন্ডোতে রেখে দেওয়া হবে না।


আমি সেখানে পেয়েছিলাম! আমি সময়ের বাইরে দৌড়ে এসে সিদ্ধান্ত নিয়েছি যে আমার উত্তরটি সম্পাদনা করতে হবে। হ্যাঁ, এটি তৃতীয় বিকল্প, প্রধান অসুবিধাটি হ'ল এটি একটি পঠনযোগ্য উইন্ডো ছেড়ে দেয় যা আপনি পুনরায় তৈরি না করে পুনরায় ব্যবহার করতে পারবেন না।
কালেব

ভাল যুক্তি. আমি একটি (আধা) workaround সঙ্গে আপডেট করেছি।
জেসনওয়ারিয়ান

এটি পেন দিয়ে কাজ করে?
আজমেউক

1
কমান্ড লাইন থেকে এটি নির্ধারণ করা যাবেtmux set-option remain-on-exit on
রমনা

1
@azmeukset-option -g remain-on-exit on bind-key r respawn-pane
হ্যাপিফিডে

1

send-keys@ কালেব দ্বারা প্রস্তাবিত পদ্ধতিটি ব্যবহার করে এখানে একটি বর্ধিত উদাহরণ দেওয়া আছে

#!/bin/sh
tmux start-server
tmux new-session -d -n 'mywindowname'
tmux send-keys -t mywindowname 'cd notes' Enter 'vim whiteboard/tasks.md' Enter
tmux new-window -d -n 'secondwindowname' # this -d prevents focus from changing to the new window
tmux -2 attach-session -d
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.