পুচ্ছ: inotify ব্যবহার করা যাবে না, পোলিংয়ে ফিরে: অনেক বেশি খোলা ফাইল


16

আমি যখন চেষ্টা করি তখন tail -f catalina.outত্রুটিটি পাই:

tail: inotify cannot be used, reverting to polling: Too many open files 

আমি এই পোস্টে উত্তরটি চেষ্টা করেছি: অনেক বেশি খোলার ফাইল - কীভাবে অপরাধীকে সন্ধান করা যায়

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head

যখন আমি উপরের কমান্ডটি চালিয়েছি, আউটপুট ছিল

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

1024 ফাইল খোলা থাকার কোনও প্রক্রিয়া আমি দেখতে পাচ্ছি না। ফাইলের সংখ্যা কি 17,13,10,10,9 খোলা নেই? নাকি আমি এটা ভুল বুঝছি? এবং এগুলি সমস্ত ছিল বাশ, এসএসডি, অ্যাপাচি 2, টমক্যাটের 4 নম্বর ছিল।

আমিও lsof | grep tail | wc -l ফিরে এসেছি 20। এই সংখ্যাগুলি বিশাল নয়, তবে কেন tail -f catalina.outব্যর্থ হয়?

উত্তর:


17

এটি http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html এর নির্দেশাবলী অনুসরণ করে আমার জন্য সমাধান করা হয়েছিল

স্থায়ী সমাধান (পুনঃসূচনাগুলি জুড়ে সংরক্ষণ করা) লাইন যুক্ত করা:

fs.inotify.max_user_watches=1048576

প্রতি:

/etc/sysctl.conf

সীমা মান স্থায়ীভাবে স্থির করে (এমনকি পুনরায় আরম্ভের মধ্যেও)।

তাহলে ক

sysctl -p

1
ফাইলের বিবরণী বাড়ানো আমার পক্ষে সাহায্য করে না। আমার tailবার্তা কিছুটা ভিন্ন ছিল: tail: inotify resources exhausted। এই উত্তরটি আমাকে সাহায্য করেছিল। sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pএটি স্থায়ীভাবে পরিবর্তন না করে যদি এটি সহায়তা করে তবে আপনি এটি পরীক্ষার জন্যও ব্যবহার করতে পারেন। এই পোস্টটি nefaria.com/2014/08/tail-inotify-res્રો- প্রসন্নতা
রুসলান

9

আমি মনে করি যে উত্তরটি সম্পূর্ণ নয় (এটি সিস্টেমে ফাইলগুলির সর্বাধিক সীমাবদ্ধতা সম্পর্কে কিছুই বলে না)।

সর্বাধিক সংখ্যক উন্মুক্ত ফাইল সম্পর্কিত সীমা রয়েছে:

  1. প্রতি প্রক্রিয়া ফাইলের সর্বাধিক সীমা ।

    • আপনি এই সীমাটির মানটি ব্যবহার করে দেখতে পারেন: ulimit -n
    • আপনি এই সীমাটি ব্যবহার করে এটি পরিবর্তন করতে পারেন: ulimit -n new_limit_number
    • এখানে অনেকগুলি ফাইল খোলা থাকা শীর্ষ 10 প্রক্রিয়াগুলি পাওয়ার জন্য একটি আদেশ রয়েছে:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. সিস্টেম প্রতি ফাইল সর্বাধিক সীমা ।

    • আপনি এই সীমাটির মানটি ব্যবহার করে দেখতে পারেন: cat /proc/sys/fs/file-max
    • আপনি এই সীমাটি ব্যবহার করে এটি পরিবর্তন করতে পারেন: echo new_limit_number > /proc/sys/fs/file-max
    • সমস্ত খোলা ফাইল হ্যান্ডলগুলি গণনা করুন: lsof | wc -l

6

সম্ভবত, আপনি আপনার inotifyঘড়ি শেষ করেছেন। সম্ভবত, আপনি পটভূমিতে কিছু ফাইল সিঙ্ক্রোনাইজেশন সরঞ্জাম (যেমন। ড্রপবক্স) চালাচ্ছেন?

লিনাক্সে, tail -fকমান্ডের অভ্যন্তরীণ প্রয়োগটি inotifyডিফল্টরূপে প্রক্রিয়াটি ব্যবহার করে , যাতে ফাইলের পরিবর্তনগুলি নিরীক্ষণ করা যায়। যদি আপনি সমস্ত inotifyঘড়ির বাইরে চলে গেছেন (ডিফল্টরূপে 8192), তবে inotify -fসেই ফাইলটিতে পরিবর্তনগুলি সনাক্ত করতে পোলিংয়ে স্যুইচ করতে হবে।

অবশ্যই আপনি সর্বোচ্চ সংখ্যক ঘড়িটি সংশোধন করতে পারেন inotify

রেফারেন্স:
http://www.quora.com/How-is-tail-f-implemented
http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html
HTTPS: // serverfault.com/questions/510708/tail-inotify-cannot-be-used-reverting-to-polling-too-many-open-files


3

sysctl fs.inotify.max_user_instancesব্যবহারকারীদের জন্য সীমা পেতে হবে inotify

আমি এটি অভিজ্ঞতা পেয়েছি এবং সমস্ত প্রশস্ত সীমা সিস্টেমের পরিমাণ যথেষ্ট বেশি ছিল তবে ব্যবহারকারী দ্বারা সেট করা সাধারণত ডিফল্টরূপে তুলনামূলকভাবে কম থাকে, আপনি এটিকে বাড়িয়ে আবার sysctl.confসাদাটি পুনরায় লোড করতে পারেন sysctl -p


3

চালান

ps aux | grep tail

অনেকগুলি টেল কমান্ড চলমান কিনা তা পরীক্ষা করতে যেমন ক্রোনটব দ্বারা স্প্যান করা হয়েছে।


হা এটি আসলে কাজ করেছে, অনেকগুলি ফাইলের টাইলিং করেছে
আলেকজান্ডার মিলস

আমি কীভাবে ডেটা অনুবাদ করব? আপনি প্রতিটি টুকরো তথ্যের অর্থ কী এবং এটি সম্পর্কে কী ব্যাখ্যা করতে পারেন? উদাহরণস্বরূপ:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
খ্রিস্টিয়া

এটি শুধুমাত্র তখনই সমস্যা হয় যখন অনেকগুলি প্রক্রিয়া মিলে যায়, লাইনটি ম্যাচ করা "গ্রেপ" ধারণ করে কমান্ড থেকেই তৈরি করা হয়। পরিবর্তে "pgrep পুচ্ছ" কমান্ড ব্যবহার করুন।
ট্যাংসিংফা

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