আউটপুট উত্পাদক কমান্ডকে প্রভাবিত না করে আমি কীভাবে কম আউটপুট অনুসরণ বন্ধ করব?


12

আমি একটি সার্ভার চালাচ্ছি এবং এই সার্ভারটির লগ কোনও ফাইলের মধ্যে নয়, টার্মিনালে লগ হয়। এই লগটি দেখতে আমি কম ব্যবহার করতে চাই।

node server.js | less

আমি যখন লগটি দেখতে চাই তখন আমি ফাইলটি শেষ করতে Shift+ চাপুন এবং লগগুলি দেখতে থাকি F। যখন আমি এটি বন্ধ করতে চাই, আমি CTRL+ ব্যবহার করি C

দুর্ভাগ্যক্রমে, এটি সার্ভারটিও বন্ধ করে দেয়। আমি কেবল সার্ভারটি বন্ধ না করে লগের শেষ দেখা বন্ধ করতে চাই।

কিভাবে এই কাজ করতে?


1
আপনি কি প্রস্থান করতে lessএবং nodeব্যাকগ্রাউন্ডে চলমান সার্ভারটি দিয়ে আপনার শেল প্রম্পটে ফিরে আসতে চান , বা আপনি কি কেবলমাত্র lessসর্বনিম্ন মোডে ফিরে যেতে চান যেখানে আপনি সর্বশেষতম লাইনগুলি দেখার পরিবর্তে লগটি দিয়ে স্ক্রল করতে পারবেন?
বাইট কমান্ডার

আমি বাইটকম্যান্ডার যখন আমি সিটিআরএল + সি টিপুন আমি চাই যে আমার সার্ভারটি চলমান থাকুক এবং আমি কম স্বাভাবিক অ-নিম্নলিখিত মোডে ফিরে যেতে চাই যেখানে আমি স্ক্রোল করতে পারি।
অজয় কুমার

উত্তর:


17

Fমোডটি প্রস্থান করার কোনও উপায় আমি খুঁজে পাচ্ছি না less, সুতরাং আপনাকে একটি কর্মচক্র ব্যবহার করতে হবে। উদাহরণস্বরূপ, আউটপুটটি একটি টিএমপি ফাইলে সংরক্ষণ করুন এবং তারপরে সেই tmpfile দেখুন:

node server.js > tmpfile & less tmpfile

&তোলে node.jsকমান্ড ব্যাকগ্রাউন্ডে রান। এর অর্থ এটি less tmpfileঅবিলম্বে শুরু হবে এবং tmpfile ট্র্যাক করবে।

একবার প্রবেশ করার পরে আপনি ফলো মোডে প্রবেশ lessকরতে টিপতে পারেন Fতবে এখন Ctrl+ Cসার্ভারটি মেরে ফেলবে না, এটি কেবল অনুসরণটি বন্ধ করে দেবে। আপনি যেমন চান তেমন চারদিকে স্ক্রোল করতে পারেন এবং Fনিম্নলিখিতটি আবার শুরু করতে আঘাত করতে পারেন ।


13

দেখে মনে হচ্ছে আপনার সাধারণত "ফরওয়ার্ড চিরতরে" মোড থেকে বেরিয়ে আসার কথা নয়, যা ম্যানুয়ালটি + man lessটিপানোর সময় আপনি যে মোডটি প্রবিষ্ট করেন সেটি নাম দেয় ।ShiftF

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


যাইহোক, এখানে কৌশলটি:

আমি ধরে নিয়েছি যে আপনি "ফরওয়ার্ড চিরতরে" মোডে প্রবেশ করতে node server.js | lessএলরেডি শুরু করেছেন এবং Shift+ টিপলেন F। এখন lessআর কোনও কীপ্রেসে প্রতিক্রিয়া দেখানো হচ্ছে না।

এই অবস্থায়, আপনি সার্ভার প্রক্রিয়াটি Ctrlহ্রাস Cকরতে + টিপতে এবং lessতারপরে চাপ ছাড়তে সক্ষম হতে পারেন Q(যা কোনও কারণে আপনার কাজের তালিকায় বন্ধ হওয়া প্রক্রিয়া হিসাবে কমান্ডটি ছেড়ে যাবে - আপনাকে fgএটি চালিয়ে যেতে হবে এবং এটি পুরোপুরি ছেড়ে দিতে হবে পরে বিনষ্ট), কিন্তু এই হল না আমরা কি চাই।

পরিবর্তে, আপনি টিপতে পারেন Ctrl+ + Zস্টপ ( "নিশ্চল") আপনার শেল প্রম্পটে কমান্ড এবং বিনিময়ে। এখন দ্রুত শেল কমান্ড টাইপ fg( " আকরিক বৃত্তাকার") কমান্ড ফোরগ্রাউন্ড চলমান অবিরত দিন। নোট করুন যে আপনার nodeসার্ভার প্রক্রিয়াটি এই অল্প সময়ের মধ্যেও বিরতি দেওয়া হয়েছে, আপনাকে এটি গ্রহণযোগ্য কিনা তা বিবেচনা করতে হবে।

তাই এখন lessআবার আগের মত আবার চলছে, ঠিক? হ্যাঁ, তবে যাদুতে এটি "চিরতরে ফরওয়ার্ড" মোডে নেই। আপনি উপরে এবং নীচে স্ক্রোল করতে আবার তীর কীগুলি ব্যবহার করতে পারেন।

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

এটি করার সবচেয়ে সহজ উপায়টি হ'ল less'সহায়তা স্ক্রিনটি খোলার জন্য এবং কীগুলি টিপুন Hএবং Qক্রমানুসারে এটি আবার বন্ধ করে দেওয়া । এখন সবকিছু আবার ঠিকঠাক বলে মনে হচ্ছে।


তবে সবচেয়ে পরিষ্কার সমাধানটি সম্ভবত টেরডনের উত্তর অনুসরণ করা এবং ফাইলটি lessনিরীক্ষণ করার জন্য আউটপুটটিকে কোনও অস্থায়ী ফাইলে পুনর্নির্দেশ করা ।


একটি বরং উজ্জ্বল নোংরা হ্যাক।
TRIG

আমি মনে করি আমি গৃহীত উত্তরটির কাছে এই উত্তরটি পছন্দ করি। আপনি %বরং চালাতে পারেন নোট করুন fg; আমি টাইপ করা সহজ / দ্রুত বলে মনে করি। এছাড়াও মনে হয় F(শিফট-এফ) এখনও hqকৌশল না করেও কাজ করে । নিস! এখন যখন আমি লগগুলি অনুসরণ করি, আমি ctrl-z % Enterআমার কম কাজটি করতে পারি, তারপরে আঘাত করে পিছনে ফিরে যেতে পারি F!
JoL

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

2
আমি উত্সটিতে সন্ধান করিনি, তবে এটি সম্ভবত কাজ করে কারণ TSTPসিগন্যালটি রিড সিস্টেম কলকে বাধা দেয় যা নতুন ডেটা আসার অপেক্ষায় ছিল; less0 বাইট গ্রহণ করে এবং ফলাফলটি শেষ হয়ে গেছে es সার্ভারটি বিরতি এড়াতে, একটি নতুন টার্মিনাল উইন্ডো খুলুন; psপ্রক্রিয়াটির প্রক্রিয়া আইডি কার্যকর এবং সনাক্তকরণ less; তারপরে টাইপ করুন kill -TSTP <PID>; kill -CONT <PID>। আপনি টাইপ করার সময় দেরি না করেই এভাবে সিগন্যালগুলি ফিরিয়ে দেওয়া উচিত।
অ্যালেক্সিস

@ অ্যালেক্সিস আপনি যদি ব্যবহার করতে চলেছেন তবে আপনি killপরিবর্তে সাইন ইন পাঠাতে পারেন। তারপরে আপনাকে প্রেরণের দরকার হবে না CONTএবং lessকেবল আপনার জন্য অপেক্ষা করছে।
মুড়ু

3

আপনার প্রশ্ন যেমন বলে:

এই সার্ভারটি কোনও ফাইলে নয়, টার্মিনালে লগ হয়।

আমি ধরে নিয়েছি যে আপনি কোনও (টেম্পর) লগ ফাইলটি ব্যবহার করতে চান না, সম্ভবত আপনার লগটি বিশাল বা আপনার কোনও কারণেই হোক।


নাম পাইপ, fifoফাইল।

আমি যা নিয়ে এসেছি তা ফাইল named pipe fileহিসাবে পরিচিত যা fifoএই ফাইলটি কেবল আপনার লগগুলি কমতে পাইপ করতে ব্যবহৃত হবে এবং এতে কোনও কিছুই সংরক্ষণ করা হবে না।

প্রথমে একটি তৈরি করুন fifo file:

mkfifo mylog

আপনার সার্ভারটি চালান এবং এই ফাইলটিতে লগগুলি পুনঃনির্দেশ করুন:

node server.js > mylog &

আপনার লগগুলি পড়ার জন্য কম ব্যবহার করুন (-f এই বিশেষ ফাইলটি পড়তে কম চাপ দেয়):

less -f mylog

এখন আপনি ব্যবহার করতে পারেন shift+ + Fঅনুসরণ করা, এবং CTRL+ + Cফলো করা বন্ধ করতে, কিন্তু সার্ভারটি এখনও চলমান থাকলে, আপনি আবার আউটপুট অনুসরণ করতে পারেন shift+ + F


ব্যাকআপ পরিকল্পনা : এটি যদি আপনার সার্ভারটি বন্ধ করে দেয় তবে আপনার কমান্ডটি ( node server.js > mylog &) কেবল একটি ফাইলের মধ্যে রাখুন:, তারপরে রান চালানোর server.shপরিবর্তে node server.js > mylog &: bash server.sh > mylog &এবং তারপরে চালান less -f mylog


এখানে নিয়মিত ফাইলের পরিবর্তে ফিফো ব্যবহার করার কী দরকার? আমি দেখতে পাচ্ছি কেবলমাত্র উপকারটি হ'ল ডিস্কের জায়গাগুলি সঞ্চয় করা তবে আমি সন্দেহ করি যে এটি এর মতো কোনও কিছুর জন্য প্রাসঙ্গিক। আপনার কাজ শেষ হওয়ার পরেও সেখানে একটি ফাইল থাকবে যা আপনাকে ম্যানুয়ালি মুছে ফেলতে হবে।
টেরডন

2
আমি এখানে একটি ফিফোর বিপরীতে সুপারিশ করছি কারণ ফিফোর বাফার পূর্ণ না হলে সার্ভার প্রক্রিয়াটি স্টল হতে পারে যখন কেউ লগ ডেটার অনুরোধ না করে। লগ ফাইলের আকারটি যদি একটি সমস্যা হয়ে যায় তবে সত্যই একটি সঠিক লগ ফাইল প্লাস ব্যবহার করা উচিত logrotate
ডেভিড ফোরস্টার

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

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