একটি বিশাল লগ ফাইল (> 14 গিগাবাইট) কেবল শেষ x জিবিতে গ্রেপ করবেন?


34

আমাকে একটি বিশাল লগ-ফাইলে (14 গিগাবাইটের বেশি) কিছু অনুসন্ধান করতে হবে। আমি নিশ্চিত এটি শেষ 4 জিবি বা এর মধ্যে in

জিনিসের গতি বাড়ানোর জন্য কি প্রথম এক্স জিবি ছেড়ে যাওয়ার কোনও উপায় আছে?


7
LC_ALL=C grepএটি দ্রুত করতে পারে
jfs

1
আপনি একটি বোধগম্য ভাবটি বাছাই করে প্রচুর গতি অর্জন করতে সক্ষম হবেন grep... অজানা দৈর্ঘ্যের ওয়াইল্ডকার্ডগুলি (যেমন a.*thing) কিছু ক্ষেত্রে মূল্যায়ন করতে আরও বেশি সময় নেয়। এটি হতে পারে যে আপনি ভুল জিনিসটির জন্য অনুকূল হয়ে যাচ্ছেন (যদিও এটি কখনও ফাইলের কেবলমাত্র অংশ অনুসন্ধান করতে ব্যথা দেয় না - সম্ভবত এটি দ্রুতগতির সবচেয়ে বড় উত্স নাও হতে পারে)।
ফ্লোরিস

উত্তর:


75

আমার ধারণা আপনি কেবলমাত্র 4 গিগাবাইট বা ততোধিক আউটপুটতে লেজ ব্যবহার করতে পারেন যা -cস্যুইচটি ব্যবহার করে

-c, --bytes = [+] NUM
আউটপুট শেষ NUM বাইট; বা প্রতিটি ফাইলের বাইট NUM দিয়ে শুরু করে আউটপুট -c + NUM ব্যবহার করুন

আপনি সম্ভবত ডিডি সহ কিছু করতে পারেন যেমন আপনি যে অফসেটটি শুরু করতে চান সেটি সেট করে bs=1এবং skipআইএনএন করে

dd if=file bs=1024k skip=12g | grep something

83
এর পরে, আপনার লোগ্রোটেট কনফিগার করা উচিত।
জেরাল্ড স্নাইডার

3
@ রাজিয়ার দয়া করে আপনার প্রশ্নের মধ্যে এটি যুক্ত না করে সমাধানের সাথে একটি উত্তর যুক্ত করুন। এটি স্ব-উত্তরের অনুরূপ: সার্ভারসফল্ট
AL 11

5
@ প্রথম ইংলিশওয়ে: ঠিক আছে না, তারা একটি আলাদা কমান্ড পোস্ট করেছে।
মনিকার সাথে লাইটনেস রেস

11
তবে আপনার উত্তরটি আসল কমান্ড সরবরাহ করে না যা সমাধানটি কার্যকর করে, যা যুক্ত করা মূল্য। আপনি নিজের উত্তরে এটি সম্পাদনা করতে পারেন, বা ওপি একটি নতুন উত্তর হিসাবে পোস্ট করতে পারে। তাদের অবশ্যই এটিকে প্রশ্নে যুক্ত করা উচিত নয়, যা ঘটেছিল। এবং আপনি অবশ্যই "আপনার নাক poোকান" এর মতো এপিথিটের চারপাশে ছোঁড়াবেন না।
মনিকার সাথে লাইটনেস রেস

7
@ ইস্ট ইংলিশওয়ে, এটি বিশ্বাস করুন বা উদাহরণ না থাকা ম্যান পেজ পড়ার চেয়ে জিনিসগুলিকে আরও সহজ করে তোলে (এটিও দেখুন:
স্ট্যাকওভারফ্লো

32

আমি কেবল এটি পোস্ট করছি কারণ কিছু মন্তব্য এর জন্য জিজ্ঞাসা করেছে।

আমি যা ব্যবহার করে শেষ করেছি তা হ'ল (15 জিবি ফাইল)। এটি খুব দ্রুত কাজ করে এবং আমাকে এক টন সময় বাঁচায়।

tail -f -c 14G file | grep something

আমি একই ফাইলটিতে একটি খুব প্রাথমিক মানদণ্ডও করেছি। আমি পরীক্ষা করেছি:

গ্রেপ এক্সএক্সএক্সএক্স ফাইল
// সর্বদা জন্য নিল (> ​​5 মিনিট)

dd if = ফাইল বিএস = 1 এড়িয়ে যান = 14 জি | গ্রেপ এক্সএক্সএক্সএক্স
// খুব দ্রুত <1 সেকেন্ড

লেজ -c 14 গ্রাম | গ্রেপ এক্সএক্সএক্সএক্স
// বেশ দ্রুত <2 সেকেন্ড

এটি tailকিছুটা খাটো।

এনবি: প্রত্যয়টি প্রতিটি আদেশ অনুসারে ব্যবহৃত gএবং Gপৃথক (উবুন্টু 15.10)


আপনি কি বেঞ্চমার্কের মধ্যে ডিস্ক ক্যাশে সাফ করলেন? আমার সন্দেহ হয় প্রথম সময়ের বেশিরভাগ সময় আমি / ও ছিলাম। স্পিডআপটি 300 not নয়, 15 the এর ক্রমে হওয়া উচিত ×
রিড

2
@ রেড আমি না। তবে আমি প্রতিটি কমান্ড একাধিকবার চালিয়েছি। আমি নিশ্চিত যে ডিডি বা লেজটি কেবল গ্রেপ (ক্যাশে বা না) এর চেয়ে গতি উল্লেখযোগ্যভাবে বাড়িয়ে তুলবে pretty
রজার

19

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

সুতরাং কমান্ডটি দেখতে:

tac < logfile | grep myString

1
আমি ঠিক একই উত্তর লিখতে এখানে এসেছি। আমি অবাক হয়েছি কেউ আপনার আপত্তি করেনি।
দিমিত্রি গ্রিগরিয়েভ

2
আমাকে এক মিনিট সময় নিয়েছিল, কিন্তু তারপরে আমি শ্লেষের দিকে তাকাতে থাকি ... ট্যাক বিড়ালের বিপরীতে।
সম্মিলিত

1
আমার একটি অ্যাপ্লিকেশন / ডিবাগ লগের চারপাশে খনন করা দরকার । কারণ এটি লাইনগুলি বিপরীত করে, এটি পড়া সহজ হয় না ;-) তবে এটি খুব দ্রুত বলে মনে হচ্ছে। কখনও দেখা হয়নি tac, তাই ধন্যবাদ!
রজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.