বড় লগ ফাইলগুলির সাহায্যে দ্রুত কীভাবে সন্ধান করতে হবে?


15

আমি প্রায়শই অবিশ্বাস্যর সাথে বড় লগ ফাইলগুলি (> 3 জিবি) নিয়ে কাজ করি। আমি লক্ষ্য করেছি যে এই ফাইলগুলির সাথে কমটির পারফরম্যান্স ভয়ানক। প্রায়শই আমি ফাইলটির মাঝামাঝি করতে লাফাতে চাই, তবে যখন আমি 15 এম লাইন এগিয়ে যেতে কম বলি তখন কয়েক মিনিট সময় লাগে ..

আমি যে সমস্যাটি কল্পনা করি তা হ'ল 'characters n' অক্ষরের জন্য ফাইলটি স্ক্যান করার দরকার নেই, তবে এটি খুব বেশি সময় নেয়।

এটিকে কীভাবে কেবল একটি স্পষ্ট অফসেটে অনুসন্ধান করার উপায় আছে? উদাহরণস্বরূপ ফাইলে 1.5 বিলিয়ন অফসেট বাইট করার চেষ্টা করুন। এই অপারেশনটি দ্রুততার আকারের হওয়া উচিত। কম যদি এমন ক্ষমতা সরবরাহ করে না, অন্য কোনও সরঞ্জাম আছে যা কি করে?


যদি আপনি নিষিদ্ধ অক্ষরগুলির জন্য ফাইলটি স্কিমিং করে থাকেন তবে এটি কি ন্যায্য অনুমান যে আপনি পূর্বোক্ত বর্ণগুলি সন্ধানের পরে মুছে ফেলবেন? যদি তা হয় তবে আমি অফার করতে পারিperl -pi -e 's/\n//g;' <filename>
মাইক পেনিংটন

দুঃখিত, স্কিম ভুল শব্দ ছিল। স্ক্যান ব্যবহার করা উচিত ছিল। নিউলাইন (\ n) এর জন্য ডিজাইন স্ক্যান করে কম। এই স্ক্যানিং বড় ফাইলগুলিতে খুব দীর্ঘ সময় নেয়।
ইউএসএআর 33

উত্তর:


21

আপনি এই জাতীয় লাইন গণনা থেকে কম থামাতে পারেন less -n

নির্দিষ্ট জায়গায় ঝাঁপিয়ে পড়ার মতো বলুন 50% ইন, less -n +50p /some/logএটি 1.5 জিবি লগ ফাইলে আমার জন্য তাত্ক্ষণিক ছিল।

সম্পাদনা করুন: একটি নির্দিষ্ট বাইট অফসেটের জন্য: less -n +500000000P ./blah.log


1
লাইন গণনা কখনই ইস্যু ছিল না; আমি তার জন্য কেবল এসএসপি / সিটিআরএল-সি ব্যবহার করতে পারি। তবে এটিই আসল উত্তর; একটি নির্দিষ্ট বাইট অফসেটে লাফ দেয় পি!
ইউএসএআর 33

5

কম, পেজার হওয়া স্বভাবতই লাইন-ভিত্তিক। আপনি যখন শুরু করবেন, যদি এটি একটি বড় ফাইল হয় তবে এটি "গণনা লাইন সংখ্যা" বলবে এবং এটি বন্ধ করতে আপনি ESC তে আঘাত করেছেন, তবে অন্যথায় এটি লাইনগুলি করে। এটি কি করে।

আপনি যদি সরাসরি ফাইলের মাঝখানে ঝাঁপিয়ে পড়তে এবং শুরুটি এড়িয়ে যেতে চান তবে আপনি সর্বদা শুরু থেকে অতীত অনুসন্ধান করতে পারেন; আমি ভালো কিছু করতে চাই tail -c +15000000 /some/log | less


3
আপনার হয় অর্থ হয় tail -c ...বা আপনার একটি অদ্ভুত lastআদেশ রয়েছে।
অ্যালান কারি

এই কৌশলটির সমস্যাটি হ'ল আপনি কম ফাইলের মধ্যে থেকে পুরো ফাইলটি আর সন্ধান করতে পারবেন না (নির্দিষ্ট বার্তাগুলি অনুসন্ধান করা ইত্যাদি)
সেকেনের

@ অ্যালানক্র্রি: এটি কেবলমাত্র একটি বিকল্প বানান ... <গ্রিন>
দোলা

0

less লোকাল সেটিংস থেকে একটি ছোট ওভারহেড রয়েছে বলে মনে হচ্ছে

আপনি যদি কেবল এএসসিআইআই অক্ষর ব্যবহার করেন তবে আপনি এটি ব্যবহার করে কিছুটা গতি বাড়িয়ে নিতে পারেন:

LC_ALL=C less big-log-file.log

আমার ক্ষেত্রে, থ্রুপুট M 30M ইব / এস থেকে ~ 50 এমবি / সেকেন্ডে বেড়েছে (রেটটি সিপিইউতে বাধ্য)

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