`লেজু - কখনও কখনও আপডেট করা বন্ধ করে - এবং ফাইলটি সরানো হয়নি


10

আমি সম্প্রতি লক্ষ্য করেছি যে কখনও কখনও tail -f <logfile>স্ক্রিনে আপডেট করা বন্ধ হবে।

একটি করে Ctrl>- Cএবং tailকাজগুলি পুনরায় আরম্ভ করা , যদিও। এবং আমি লগফিলটি মাঝধারায় ঘোরানো হচ্ছে না তা নিশ্চিত করে পরীক্ষা করেছি (যা tailতার মন হারাতে পারে)।

এর কারণ কী হবে? আমি RHEL 5.2 x64 চালাচ্ছি।


এটি কি সমস্ত লগফাইলে, বা নির্দিষ্ট কিছুতে ঘটে? লগফাইলে কোন ফাইল সিস্টেম চালু আছে? লগফাইলে কি আবেদন লিখছেন? আপনি লেজ কমান্ড শুরু করার পরে (১) একটি নির্দিষ্ট সময়কাল হয় কিনা তা দেখতে ব্যর্থতার সময়সীমাটি করেছেন; বা (2) নির্দিষ্ট নির্দিষ্ট বিরতিতে (যেমন সর্বদা: 00: 10: 20: 30: 40 এবং: 50 ঘন্টা পরে)?
ডেভ্যাডামস

@ ডেভ্যাডামস - যতদূর আমি লক্ষ্য করেছি, এটি কেবলমাত্র দুটি (দুটি সার্ভারের প্রত্যেকটির একটিতে) হয়েছে: এক্ষেত্রে, এইচপিএসএ কোর সার্ভারে (ডেটা সেন্টার অটোমেশন) বিএসএই (রিপোর্টিং সরঞ্জাম) এর জন্য ডেটাামিনার লগফিল এবং প্রতিবেদক হোস্টে BSAE- এর জন্য সার্ভার.লগ
ওয়ারেন

1
অন্যদিকে, পুচ্ছ -F ফাইলটি মুছে ফেলা হয় এবং পরে অন্য কোনও ফাইল সম্পূর্ণরূপে প্রতিস্থাপন করা হলেও চলতে থাকবে।
সাইরেক্স

উত্তর:


6

আপনার টেল কমান্ডটি এটি দিয়ে মুড়িয়ে দেওয়ার চেষ্টা করুন strace:

strace -Tt -o /tmp/tail.trace tail -f /var/log/messages

তারপরে কেবল ক্রেজি রিকার্সিভ কিক্সের জন্য আপনি স্ট্রেস আউটপুটটি লেজ করতে পারেন (এটি যদি কোনও ফাইলের বাইরে চলে যায় কারণ এটি ব্রেক হয়ে যায় তবে তাতে কিছু যায় আসে না):

 tail -f /tmp/tail.trace

আমার দেখতে দেখতে:

8:39:00 write(1, "ng SMAC\n", 8)       = 8 <0.000026>
18:39:00 read(3, "", 0)                 = 0 <0.000019>
18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019>
18:39:00 fstatfs64(3, 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=4807069, f_bfree=1924458, f_bavail=1680271, f_files=1221600, f_ffree=820806, f_fsid={-1331083162, -1313908385}, f_namelen=255, f_frsize=4096}) = 0 <0.000021>
18:39:00 inotify_init()                 = 4 <0.000033>
18:39:00 inotify_add_watch(4, "/var/log/messages", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1 <0.000041>
18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019>
18:39:00 read(4,

-T সময়ে স্যুইচ করে এবং কলগুলিতে সময় কাটাতে টিটি স্যুইচ করে।

কিছুটা উল্লম্ব স্থান তৈরি করতে 4 বা 5 বার রিটার্ন হিট করুন, তারপরে এটি লেজ বন্ধ করার জন্য অপেক্ষা করুন। আশা করি আউটপুটটিতে কিছু ক্লু আসবে।


9

ব্যবহার করার চেষ্টা করুন:

tail --follow=name <logfile>

এবং দেখুন যে এটি আরও ভাল কাজ করে। এটি আপনার নীচে থেকে আবর্তিত হওয়ার বিষয়ে আপনাকে চিন্তা করার দরকার নেই।


কোন প্যাটার্ন এটি বন্ধ? নির্দিষ্ট সময়ের দৈর্ঘ্য? দিনের নির্দিষ্ট সময়?


ফাইলটি নীচের দিক থেকে ঘোরানো হচ্ছে না tail- এটি পর্যায়ক্রমে (2 থেকে 20 ঘন্টার মাঝে মাঝে) আর অনুসরণ করা বন্ধ করে দেয় .. ইচ্ছুক কোনও নমুনা
ওয়ারেন

আপনি যদি কীবোর্ডের অন্যান্য কীগুলি (সিটিআরএল-সি ব্যতীত) আঘাত করেন তবে এটি কী আরও ভাল হয়? এটি বন্ধ হয়ে গেলে, আপনি স্ট্রেস / ltrace / ইত্যাদি ব্যবহার করে এটিতে সংযুক্ত করার চেষ্টা করতে পারেন। এটি কিছু করছে কিনা তা দেখতে।
মাইকিবি

স্ট্রেসের উপর ভাল চিন্তাভাবনা - প্রবেশ করুন বা অন্য কীগুলি তেমন কিছুই পেতে পারে না; আমি কখনও কখনও screenবর্ধিত ডিবাগিংয়ের জন্য একটি সেশনে একটি লেজ-এফ ছেড়ে যেতে চাই , এবং এটি উদ্বেগজনক
ওয়ারেন

1
আহ ... সম্ভবত আপনার সমস্যা নয়, তবে নিশ্চিত করুন যে আপনি দুর্ঘটনাক্রমে লেজ -f চলমান সাথে অনুলিপি করে কোনও পর্দা উইন্ডো অনুলিপি মোডে খোলা রাখবেন না। অনুলিপি মোড শেষ পর্যন্ত কমান্ড আউটপুট ব্লক তৈরি করবে (যখন বাফারটি পূর্ণ হবে)।
মাইকিবি

দুর্দান্ত উত্তর। অবশ্যই আমার ফাইলগুলি প্রতি ঘন্টার শীর্ষে আবর্তিত হচ্ছে!
অ্যালেক্স

4

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

  • ls -i logfileলেজ শুরুর আগে লগফাইলে ( ) এর ইনড নোট করুন এবং একবারে লেজ ব্যর্থ হয়ে গেলে আবার এটি পরীক্ষা করে দেখুন। যদি ইনোড পরিবর্তিত হয়ে থাকে, তবে লগার সম্পূর্ণ লগফাইলে পুনরায় লিখন করছে, যা পুচ্ছের সংযোগ ভঙ্গ করবে।

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

শুভকামনা।


3

এখানে একই সমস্যা হচ্ছে।

সমস্যাটি ছিল, যে ফাইলটি আমি দেখছি তা অন্য একটি মেশিন থেকে মাউন্ট করা হয়েছিল। পরিবর্তন বিজ্ঞপ্তিটি মাউন্টের মাধ্যমে প্রচার করা হয়নি।

সমাধানটি মূল মেশিনে লেজ ব্যবহার করা ছিল।

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