কীভাবে ইউলিমিট ব্যবহার পরীক্ষা করা যায়


29

কোনও প্রদত্ত ব্যবহারকারীর জন্য উলিমিটের ব্যবহার পরীক্ষা করার কোনও উপায় আছে কি? আমি জানি যে আপনি যখন কোনও একক প্রক্রিয়া শুরু করার সময় বা চলমান অবস্থায় একটি শেলের জন্য ওলিমিট পরিবর্তন করতে পারেন তবে কোনও ব্যবহারকারী তাদের সীমাবদ্ধতাটি কতটা ঘনিষ্ঠ করার জন্য আমি "নিরীক্ষণ" করতে সক্ষম হতে চাই? আমি এমন একটি bashস্ক্রিপ্ট লেখার পরিকল্পনা করছি যা বর্তমান ব্যবহারের শতাংশের পিছনে রিপোর্ট করবে back বিশেষত, আমি ট্র্যাক করতে চাই:

  1. ফাইল খুলুন ( ulimit -n)
  2. সর্বোচ্চ ব্যবহারকারী প্রক্রিয়া ( ulimit -u)
  3. মুলতুবি সংকেত ( ulimit -i)

আমি যা চাই তা হ'ল ব্যবহারের শতাংশ (0-100)।


যদি আপনার কার্নেলে প্রসেস অ্যাকাউন্টিং চালু থাকে তবে আপনি আপনার ব্যবহারকারীদের সম্পর্কে বিশদ ব্যবহারের পরিসংখ্যান সংগ্রহ করতে পারেন।
কেসি

আপনি কিভাবে প্রক্রিয়া অ্যাকাউন্টিং চালু করবেন?
হ্যাজমেট

এবং এটি কত ওভারহেড যুক্ত করে?
হ্যাজমেট

উত্তর:


22

সম্ভবত এটি প্রথম প্রশ্নের জন্য সহায়তা করে:

আপনি যদি নির্দিষ্ট ব্যবহারকারীর প্রসেস আইডি (পিআইডি) জানেন তবে প্রতিটি প্রসেসের সীমাবদ্ধতা এটি সহ পেতে পারেন:

cat /proc/<PID>/limits

আপনি প্রতিটি পিআইডি-র জন্য খোলা ফাইলগুলির সংখ্যার সাথে এটি পেতে পারেন:

ls -1 /proc/<PID>/fd | wc -l

এবং তারপরে Max open filesএকটি শতাংশ পেতে দ্বিতীয় কমান্ড থেকে ওপেন ফাইল বর্ণনাকারীর সংখ্যার সাথে মানটির তুলনা করুন ।


8

বেশ কয়েকটি অসুবিধাগ্রস্ত পদ্ধতি এবং মানক সরঞ্জাম দ্বারা বর্তমান ব্যবহারকারীর উন্মুক্ত ফাইল, প্রক, এবং মুলতুবি সংকেতগুলির শতাংশের ফলাফল আউটপুট করুন:

paste <(grep 'open files\|processes\|pending signals' /proc/self/limits | 
        cut -c27-38) \
      <(i=`whoami` ; lsof -u $i | tail -n +2 | awk {'print $9'} | wc -l; 
                     ps --no-headers -U $i -u $i u | wc -l ; 
                     ps -u $i -o pid= | xargs printf "/proc/%s/status\n" |
                                        xargs grep -s 'SigPnd' |
                                        sed 's/.*\t//' | paste -sd+ | bc ; ) |
while read a b ; do echo $((${b}00/a))%; done

আমার সিস্টেমে আউটপুট:

59%
9%
0%

এই সংখ্যাগুলি ভাল বলে ধরে নিচ্ছি, এই উত্তরটি যা দেখায় তা হ'ল এটি শেলের মধ্যে করা যেতে পারে, তবে খুব ভাল শেল পদ্ধতি না থাকলে সম্ভবত তা করা উচিত নয়। পরিবর্তে, এই প্রশ্ন ভাল সঙ্গে সম্পন্ন করা হবে gcc, অথবা python, ইত্যাদি


-4

উলিমিটগুলি প্রক্রিয়াগুলির বৈশিষ্ট্য এবং শিশু প্রক্রিয়াগুলিতে উত্তরাধিকার সূত্রে প্রাপ্ত।

আপনি অন্য প্রক্রিয়াটির সীমা পেতে পারেন না।


2
ছাইপাঁশ. man lsof,, man ps
গিলস 'অশুভ হওয়া বন্ধ করুন'

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

2
এটি lsofরক্ষণাবেক্ষণকারীদের পক্ষে অবশ্যই মাথা ব্যথা । তবে শেষ ব্যবহারকারীর জন্য প্রাসঙ্গিক নয়। এই প্রশ্নের প্রসঙ্গেও ভুল, যেহেতু এটি বিশেষত লিনাক্স সম্পর্কে জিজ্ঞাসা করছে, যার ডকুমেন্টেড ইন্টারফেস রয়েছে ( man proc)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

আপনি অননুমোদিত ইন্টারফেসের বিষয়ে কথা বলছেন যা এই ক্ষেত্রে কোনও বিজ্ঞপ্তি ছাড়াই পরিবর্তন সাপেক্ষে।
স্কিলে

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