আউটপুট নীচে বাশ প্রম্পট - পটভূমি লগ টেইল


15

আমি এমন একটি সংস্থার জন্য কাজ করতাম যার লিনাক্সে চলমান তাদের একটি পণ্য পরিচালনার জন্য কাস্টমাইজড শেল ছিল এবং আমি এই শেলের একটি মূল বৈশিষ্ট্যটি প্রতিলিপি করতে চাইছি।

সমস্ত কাজ একটি পটভূমি প্রক্রিয়া দ্বারা সম্পন্ন হয়েছিল এবং সমস্ত সংযুক্ত ব্যবহারকারীদের লগ থেকে আউটপুট প্রদর্শিত হয়েছিল।

লগটি আপনার শেলটির পটভূমিতে লেজ দেয় এবং প্রম্পট লাইনটি সর্বদা নীচে থাকত stay

যেমন যেমন

Log line 1
Log line 2
Log line 3
![ROOT@PRODUCT51-LIVE]:~/ #

ব্যাশের সাথে আমি যেভাবে এটি করার চেষ্টা করেছি তা হ'ল ব্যবহারকারীদের .bashrc ফাইলে একটি বিচ্ছিন্ন লেজ শুরু করা, কিন্তু কমান্ড থেকে আউটপুটটি যখন stdout এ প্রেরণ করা হয় - এটি বাশ প্রম্পটের অধীনে আসে, যেমন

![ROOT@PRODUCT51-LIVE]:~/ #Log line 1
Log line 2
Log line 3

এবং ব্যবহারকারীর প্রবেশ বা CtrlCএকটি পরিষ্কার প্রম্পট লাইনের জন্য চাপতে হবে ।

আমি কীভাবে প্রম্পটটিকে সর্বদা আউটপুটের নীচে ঝাঁপিয়ে তুলব সে সম্পর্কে আমার ধারণার বাইরে নেই এবং আমি মনে করি যে আমার ভাগ্য নেই বলে গুগলে কিছু খুঁজে পেতে আমি ভুল পরিভাষা ব্যবহার করছি - কেউ কীভাবে এটি করতে জানেন বাশ দিয়ে?


1
আপনি তাত্ক্ষণিকভাবে আউটপুট আপডেট চান বা আপনি যখন নতুন প্রম্পট পান?
ahilsend

তাত্ক্ষণিকভাবে, সুতরাং এটি "টেল-ফ" চালানো যতটা সম্ভব সমান, তবে নীচে প্রম্পট সহ।
iamacarpet

আপনি tail -fযখন উল্লেখযোগ্য পরিমাণ আউটপুট যুক্ত একটি কমান্ড প্রবেশ করেন, বিশেষত যখন আপনার ব্যাকগ্রাউন্ড প্রক্রিয়া সক্রিয়ভাবে তার আউটপুট প্রেরণ করে তখন আউটপুট এবং প্রম্পট এবং কমান্ড আউটপুটটির কী ঘটে ?
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

তাদের ক্ষেত্রে, যে কমান্ডগুলি কেবল চালিত হবে সেগুলি তাদের নিজেরাই নয়, ব্যাকগ্রাউন্ড প্রক্রিয়াটির মাধ্যমে আউটপুট সৃষ্টি করেছিল, সুতরাং এটি কোনও সমস্যা ছিল না। এই ক্ষেত্রে, একবার আমরা একটি সমাধান পেয়েছি যা কাঙ্ক্ষিত প্রভাব দেয়, আমি মনে করি এটি খেলতে এবং দেখতে পারা যায় যে বাস্তবায়ন থেকে প্রয়োগের ভিত্তিতে আউটপুট মিশ্রিত হওয়া কতটা খারাপ।
iamacarpet

1
তারপরে আমি পর্দা বা tmux ব্যবহারের পরামর্শটিকে দৃ strongly়ভাবে সমর্থন করি। আউটপুটটি মিশ্রিত হবে না বা স্ক্রিন স্পেসের জন্য লড়াই করবে না এবং আপনি উইন্ডোজগুলির আকার পরিবর্তন করতে পারবেন (বিভাজনটি সরান) এবং তাদের স্বাধীনভাবে স্ক্রোল করতে পারেন। যদি আপনার আপত্তি শিরোলেখ / পাদলেখ / স্থিতি রেখাগুলি "ভারী" হয়ে থাকে তবে সেটি কনফিগার করার কিছু ক্ষমতা আছে। কোনও চাকা পুনর্নবীকরণ করা হয়নি।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

উত্তর:


1

নীচে tmux বা স্ক্রিন বা অন্যান্য প্রোগ্রাম ব্যবহার না করে আপনার যা প্রয়োজন তা করে। প্রম্পটটি নীচে রাখে। আপনার প্রয়োজনীয় ফাইলের সাথে "/ var / লগ / ক্রোন" প্রতিস্থাপন করুন:

#!/bin/bash 
L=$(tput lines)
L1=${L}
(( L1-- ))
C=$(tput cols)
tput cup ${L} 0
tail -f /var/log/cron | while read line; do 
  tput sc
  printf "\e[1;${L1}r\e[${L1};${C}f" 
  echo; echo ${line}
  printf "\e[1;${L}r" && tput rc
done

এর চাবিকাঠিটি হল টার্মিনালের জন্য এএনএসআই নিয়ন্ত্রণ অক্ষর। বিশেষত "\ e [x; y" বিবৃতি যা একটি নতুন স্ক্রোলযোগ্য অঞ্চল নির্ধারণ করে। সুতরাং, লগ ফাইলের প্রতিটি লাইন পড়ার সাথে সাথে, উইন্ডোটির নীচের লাইনটি স্ক্রোলযোগ্য অঞ্চল থেকে বাদ দেওয়া হবে, লগ ফাইল থেকে লাইনটি প্রবেশ করানো হবে, তারপরে নীচের অংশটি আবার যুক্ত করা হবে।


ধন্যবাদ মাইকেল, যা সুন্দরভাবে কাজ করে =] - প্রচুর লগ লাইন স্ক্রোলিং করার সময় আপনি টাইপ করে যাচ্ছেন এর মাঝে মাঝে আমার সমস্যা হয়, আপনি আপনার কনসোল লাইনের সমস্ত পাঠকে ব্যাকস্পেস করতে পারবেন না (আমি এটি দিয়ে পরীক্ষা করছিলাম) একটি ব্যস্ত অ্যাপাচি লগ), তবে আমি এটির জন্য যা ব্যবহার করতে চাই তার জন্য সমস্যা হওয়া উচিত নয়।
আইয়ামকার্পেট

পছন্দ করুন খুশি এটা আপনার জন্য কাজ করে।
মাইকেল মার্টিনেজ

11

উত্তরটি হ'ল পর্দা বা tmux ব্যবহার করা হয়েছে

আপনি কীভাবে স্ক্রিন ব্যবহার করে এমন কনফিগার করতে পারবেন তা আমি ব্যাখ্যা করব

1) apt-get install screenউবুন্টু / ডেবিয়ান বা yum install screenরেডহ্যাট ডেরিভেটস ব্যবহার করে স্ক্রিন ইনস্টল করুন ।

2) screen -S shell_and_logs

3) তারপরে Ctrl+ টিপুন a, তারপরে S(মূলধন এস) টিপুন ।
একটি অনুভূমিক পর্দা প্রদর্শিত হবে

4) টিপুন Ctrl+ এর aপরে TAB
এটি দ্বিতীয় বিভক্ত উইন্ডোতে লাফিয়ে উঠবে।

5) এখানে অন্য উইন্ডোটি তৈরি করুন যাতে আপনি কমান্ড প্রম্পটটি টিপুন Ctrl+ aটিপুন এবং তারপরে টিপুনc

)) আপনি দ্বিতীয় টিপ দিয়ে পুনরায় আকার পরিবর্তন করতে পারেন Ctrl+ aতারপরে টাইপ করুন :resizeযার পরে Lines:উপস্থিত হবে। আপনি যে লাইনের সংখ্যাটি প্রদর্শন করতে চান তা প্রবেশ করান।

)) অবশেষে আপনি Ctrl+ এর aপরে উইন্ডোজগুলির মধ্যে পরিবর্তন করতে পারেন TAB

নীচে উদাহরণ দেখুন


ধন্যবাদ Val0x00ff - আমি ধারণাটি পছন্দ করি, এটি কাজটি সম্পন্ন করে - তবে এটি প্রদত্ত সিস্টেমের অভিজ্ঞতা হিসাবে ততটা পরিষ্কার দেখাচ্ছে না। কোনও অনভিজ্ঞ ব্যবহারকারীর কাছে, এটি ততটা স্বচ্ছ নয় - এটি আপনার প্রধান শেলটি আপনাকে আপডেট রাখার মতো মনে করার চেয়ে এটি অবশ্যই অন্য একটি শেল।
iamacarpet

@ আইম্যাকারপেট tail -F /var/log/messages &হ'ল আপনাকে বার্তা প্রদর্শন করার আরেকটি উপায় যা উদাহরণস্বরূপ যখন কোনও লগইন ব্যর্থতা সন্ধান করা হয় বা যখন কোনও পরিষেবাতে সমস্যা থাকে তখন কিছু পরিবর্তন হয়। এটি তবে আদর্শ নয় কারণ এটি আপনার ইন্টারেক্টিভ শেলটিকে বিশৃঙ্খলা করবে।
ভ্যালেন্টাইন বজরামি

হ্যাঁ আমি যা বলছিলাম ঠিক সেটাই - একটি উপায় যা ইন্টারেক্টিভ শেলকে গোলমাল না করেই করত - যেমন তারা সংস্থাগুলির শেলটি করতে পেরেছিল - তবে স্ক্র্যাচ থেকে শেল না লিখলে ভাল লাগবে ' এটি সম্পাদন করতে।
iamacarpet

1
@ আইম্যাকারপেট ছাড়াও আরও অনেকগুলি সরঞ্জাম রয়েছে screenএবং tmuxএটি এটি করতে পারে - উদাহরণস্বরূপ বিএসডি-র কিছু windowকমান্ড সহ জাহাজ ship পছন্দটি দেওয়া হয়েছে যদিও আমি কোনও কাস্টম শেল বা তার নমনীয়তার কারণে উপলভ্য অন্যান্য বিকল্পগুলির উপর এই সমাধানটি সুপারিশ করব। এটি শেষ ব্যবহারকারীর মতো স্বচ্ছ হতে পারে না, তবে তারা সত্যিই পার্থক্যটি জানতে পারবে না এবং পাওয়ার ব্যবহারকারী / সিসাদমিনরা প্রদত্ত অতিরিক্ত নমনীয়তা ব্যবহার করতে সক্ষম হবে screen
voretaq7

@ আইম্যাকারপেট t=$(mktemp); printf '%s\n' 'screen tail -F /var/log/messages' split focus screen > "$t"; screen -S screenname -c "$t"এটিকে স্ক্রিপ্টে রাখুন এবং আপনি যখনই চান এটি চালান। এর জন্য গিরিহাকে ধন্যবাদ # বাশ @ irc.freenode.org
ভ্যালেন্টাইন বাজরামি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.