জিএমইউ স্ক্রিনের "লগ" কমান্ডের টিএমউক্সে কি সমান পরিমাণ রয়েছে?


35

সেশনের আউটপুট কোনও ফাইলে লগ করতে আমি স্ক্রিনের "লগ" কমান্ডটির ভারী ব্যবহার করি, যখন আমি কোনও প্রদত্ত পরিবেশ পরিবর্তন করি। আমি tmux এর ম্যান পেজ দিয়ে অনুসন্ধান করেছি, তবে এর সমতুল্য খুঁজে পেলাম না। Tmux- তেও কি কোনও অনুরূপ বৈশিষ্ট্য সম্পর্কে সচেতন, বা এটি করার জন্য আমাকে কি আমার নিজের র‍্যাপার স্ক্রিপ্টগুলি লিখতে হবে?

সম্পাদনা: আমি 'স্ক্রিপ্ট' এবং অন্যান্য ইউটিলিটিগুলি সম্পর্কে সচেতন যা আমাকে একটি সেশন লগ করতে দেয়। স্ক্রিনটির কার্যকারিতা যেহেতু দরকারী তাই হ'ল লগফাইলে ভেরিয়েবল সংজ্ঞা দেওয়ার ক্ষমতা যা প্রতিটি সেশনের স্বতন্ত্রভাবে সনাক্তকরণের জন্য স্ট্রিং পলায়ন ব্যবহার করে।

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

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

উত্তর:


39

আমি আপনার স্ক্রিন কনফিগারেশনটি সঠিকভাবে ডিক্রিফাই করেছি কিনা তা আমাকে দেখতে দিন :

  • লগ ফাইলের নামটি পরে কনফিগার করতে আপনি logfile "%t-screen.log"(সম্ভবত কোনও .screenrcফাইলে) এর মতো কিছু ব্যবহার করেন।
  • আপনি একটি নতুন উইন্ডোর শিরোনাম সেট করতে title <hostname>(Ca A) স্ক্রিন কমান্ডটি ব্যবহার করেন , বা
    আপনি screen -t <hostname> ssh0 <hostname>একটি নতুন স্ক্রিন সেশন শুরু করতে চান ।
  • আপনি কনফিগার করা ফাইলটিতে লগিং টগল করতে Ca এইচ (Ca: লগ) স্ক্রিন কমান্ডটি ব্যবহার করেন ।

যদি তা হয় তবে এটি প্রায় সমান ( শেল কমান্ডে #W সমর্থন করার জন্য tmux 1.3+ প্রয়োজন pipe-pane; tmux 1.0+ এ pipe-paneউপলব্ধ ):

  • একটি কনফিগারেশন ফাইলে (যেমন .tmux.conf):

    bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
    
  • ব্যবহারের tmux rename-window <hostname>(CB) একটি বিদ্যমান উইন্ডোর নামান্তর, অথবা
    ব্যবহার tmux new-window -n <hostname> 'ssh <hostname>'একটি নতুন শুরু করার tmux উইন্ডো, অথবা
    ব্যবহার tmux new-session -n <hostname> 'ssh <hostname>'একটি নতুন শুরু করার tmux সেশন।
  • লগিং টগল করতে সিবি এইচ ব্যবহার করুন।

লগটি টগল করা হয়েছে এমন কোনও বিজ্ঞপ্তি নেই, তবে আপনি চাইলে একটি যোগ করতে পারেন:

bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'

দ্রষ্টব্য: উপরের লাইনটি এমনভাবে দেখানো হয়েছে যেন এটি কোনও কনফিগারেশন ফাইলে থাকে (না হয় .tmux.confআপনি একজন source)। tmux ব্যাকস্ল্যাশ এবং সেমিকোলন উভয়ই দেখতে হবে; যদি আপনি এটি শেল (উদাহরণস্বরূপ tmux bind-key …) থেকে কনফিগার করতে চান তবে আপনাকে উভয় অক্ষরকে যথাযথভাবে পালাতে বা উদ্ধৃতি দিতে হবে যাতে সেগুলি টিএমউক্স অক্ষত অবস্থায় সরবরাহ করা হয়। কেবলমাত্র একটি একক বাঁধাই ব্যবহার করার সময় টগল করার জন্য / অফ করার জন্য বিভিন্ন বার্তা দেখানোর কোনও সুবিধাজনক উপায় বলে মনে হচ্ছে না (আপনি কিছুটা ছোঁড়াতে সক্ষম হতে পারেন if-shellতবে এটি সম্ভবত কুৎসিত হবে)। যদি দুটি বাইন্ডিং গ্রহণযোগ্য হয়, তবে এটি ব্যবহার করে দেখুন:

bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'
bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'

নিস! এটি দেখতে আমার ঠিক যা প্রয়োজন ঠিক তা করতে দেখাচ্ছে।
মুরালি সুরিয়ার

Hrrm। সুতরাং শেল থেকে এটি করার চেষ্টা করে কিছু সমস্যা পাওয়া যায়। সম্পূর্ণ লাইনটি
টিএমউক্স

2
@ কামিলডিজিডজিক: আপনি tmux pipe-pane …আপনার কমান্ড অন্তর্ভুক্ত করার চেষ্টা করতে পারেন default-command(যেমন শেল শুরুর আগে); অবশ্যই এটি কেবলমাত্র "ডিফল্ট" প্যানগুলির জন্য কাজ করবে (সুস্পষ্ট কমান্ড দিয়ে কিছুই শুরু হয়নি, যেমন new-window sqlite3)। এমন কিছু ইঙ্গিত পাওয়া গেছে যে "হুক" সমর্থনটি ভবিষ্যতে tmux এর কিছু সংস্করণে অবতরণ করতে পারে ; এই আপনি কমান্ড কনফিগার দিন পারে (যেমন pipe-pane …) স্বয়ংক্রিয়ভাবে কিছু অন্যান্য কমান্ড পর চালানো যাবে new-session, new-windowঅথবা split-pane)।
ক্রিস জনসেন

1
@ সেবেলক: আপনি যদি কোনও স্বতন্ত্র রেখাটিকে "প্রবেশ" হিসাবে বিবেচনা করেন তবে আপনি শেলটি ব্যবহার করতে পারেন readএবং এটির dateব্যবস্থা করতে পারেন। উদাহরণস্বরূপbind-key H pipe-pane -o 'exec bash -c "while IFS= read -r line; do echo \"\$(date +%%Y%%m%%dT%%H%%M%%SZ%%z): \$line\"; done" >>$HOME/"#W-tmux.log"'
ক্রিস জনসেন

1
@ChrisJohnsen ... যে প্রণীত পারে পর্যন্ত একটি তাজা কপি চালানোর জন্য একটি subshell ডিম ছাড়ার - যদি আমরা জানতাম ব্যাশ 4.1 অথবা ঊর্ধ্বতন সংস্করণ ছিল আরও দক্ষ dateআউটপুট প্রতিটি লাইনে জন্য একটি গুরুতর কর্মক্ষমতা হিট হতে যাচ্ছে! আরও ভাল printf '%(%Y%m%dT%H%M%S)T: %s\n' "$line"(tmux কনফিগারেশন ফাইলে অন্তর্ভুক্তির জন্য প্রয়োজনীয় হিসাবে পলায়ন, সম্ভবত এটি দ্বিগুণ করা %sএবং "গুলি থেকে বেরিয়ে আসা )।
চার্লস ডফি

5

এখানে একটি টিএমউক্স প্লাগইন রয়েছে যা কী বাইন্ডিংগুলিতে কোনও गडস না করে লগিং সক্ষম করে .tmux.conf:

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

বৈশিষ্ট্য:

  • prefix + Pপেন লগিং টগল করে। আউটপুট অবাঞ্ছিত এএনএসআই অক্ষর থেকে সাফ করা হয়েছে!
  • prefix + Alt + P একটি ফাইলে সম্পূর্ণ ফলক ইতিহাস সংরক্ষণ করে

4

Tmux এর জন্য ডকুমেন্টেশন সন্ধানের পরে, আমি পর্দার উইন্ডো লগিংয়ের সমতুল্য কোনও সন্ধান করতে পারি না। দেখে মনে হচ্ছে আপনার শেল ফাংশনগুলি আপনাকে যা করতে চান তা করতে বা কেবল স্ক্রিন ব্যবহার করতে হবে। আপনি ডিবাগিংটি চালু করতে পারেন, যা সার্ভার এবং ক্লায়েন্ট উভয় পক্ষই লগ করে, তবে এতে প্রচুর বহিরাগত tmux- সম্পর্কিত লগও অন্তর্ভুক্ত রয়েছে, সুতরাং আপনি যা চাইছেন ঠিক তা নয়।

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


1
এটি আমার সিদ্ধান্তেও ছিল। আমি আপাতত স্ক্রিনের সাথে লেগে থাকার সিদ্ধান্ত নিয়েছি, যা এই লজ্জার বিষয়, এই তদারকি ব্যতীত, টিএমউक्सটি বেশ সুন্দর দেখাচ্ছে।
মুরালি সুরিয়ার

1

আমি স্ক্রিপ্ট ব্যবহার করে এটি করি, এটি আমার tmux.conf ফাইল থেকে

bind ^C new-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"
bind c new-window "script -f /home/jcosta/mydocs/work/logs/$( date '+%d%m%Y_%H%M%S')_$$.log"
bind | split-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"

1
স্ক্রিনের logকমান্ডের একটি খারাপ প্রতিস্থাপন , যা ফ্লাইতে লগিং করতে দেয় allows তবে আপনি যদি tmux এ থাকেন এবং স্ক্রিনের লগিং ব্যবহার করতে চান তবে আপনাকে যে কোনও উপায়ে একটি নতুন শেল শুরু করতে হবে।
আর্জেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.