লিনাক্স কমান্ড লাইনে সিপিইউ ব্যবহারের জন্য কী কী পদ্ধতি উপলব্ধ? [বন্ধ]


12

আমরা জানি যে topলিনাক্সে সিপিইউ ব্যবহারের জন্য একটি কমান্ড এবং অন্যান্য উপায়ে cat /proc/statশীর্ষে ব্যবহৃত হয় include

লিনাক্স কমান্ড লাইনে সিপিইউ ব্যবহারের জন্য অন্যান্য পদ্ধতিগুলি কী কী?

কেস দৃশ্যের ব্যবহার: এই কমান্ডের আউটপুট ক্রমাগত সিপিইউ ব্যবহার লগ করতে একটি স্ক্রিপ্ট দ্বারা ব্যবহৃত হবে। topএবং /proc/statবিস্তারিত ব্যবহার করুন যা লগ করা কঠিন। সিপিইউ তথ্য পাওয়ার সহজ উপায় কি আছে?


3
আপনি যেটা উদ্ধৃত করেছেন তাতে ভুল কি?
প্যাটালুক

@ পেটালুক এটি আরও বিস্তারিত তথ্য দেয়। আমার সামগ্রিক সিপিইউ ব্যবহার দরকার যা সিপিইউ ব্যবহার করে বলে: 91% মেম ব্যবহৃত: 78% মেম ফ্রি: 22% এরকম কিছু ..
ফ্যাসিল

নাথনের উত্তর দেখুন ... আপনি sedযদি কেবল মানটি চান তবে আপনি ফলাফল পেতে পারেন।
প্যাটালুক

"গঠনমূলক নয়" হিসাবে বন্ধ করার জন্য ভোট দেওয়া। Superuser.com/help/dont-ask থেকে : " আপনার প্রশ্নটিকে পতাকাঙ্কিত করা এবং সম্ভবত অপসারণ করা থেকে বিরত রাখতে, বিষয়বস্তু প্রশ্ন জিজ্ঞাসা করুন যেখানে আপনার উত্তরটি প্রশ্নের পাশাপাশি প্রদান করা হয়েছে, এবং আপনি আরও উত্তর প্রত্যাশা করছেন: 'আমি ______ এর জন্য ______ ব্যবহার করি , তুমি কি ব্যবহার কর?' "
বিডব্লিউড্রাকো

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

উত্তর:


14

অন্যরা যেমন বলেছে, সম্ভবত সবচেয়ে ভাল উপায় top। এটি একটি সামান্য টুইট এবং একটি সামান্য পার্সিং প্রয়োজন কিন্তু আপনি শতাংশ হিসাবে বর্তমান CPU ব্যবহার দিতে এটি পেতে পারেন।

topব্যবহারকারী, সিস্টেম প্রক্রিয়া এবং niceপ্রক্রিয়াগুলির মধ্যে সিপিইউ ব্যবহারকে বিভক্ত করে, আমরা তিনটির যোগফল চাই। সুতরাং, আমরা চালাতে পারেন topমধ্যে batch মোড যা আমাদের তার আউটপুট পার্স করতে পারেন। তবে, এখানে যেমন বর্ণনা করা হয়েছে , top -bবুটের পর থেকে 1 ম পুনরাবৃত্তি শতাংশের পরিমাণ দেয়, সুতরাং -n 2আমাদের বর্তমান শতাংশ পেতে কমপক্ষে দুটি পুনরাবৃত্তি ( ) প্রয়োজন। জিনিসগুলি গতি বাড়ানোর জন্য, আপনি dপুনরাবৃত্তির মধ্যে elay সেট করতে পারেন 0.01। অবশেষে, আপনি grepসিপিইউ শতাংশযুক্ত লাইন এবং তারপরে gawkব্যবহারকারী, সিস্টেম এবং দুর্দান্ত প্রক্রিয়াগুলি যোগ করতে ব্যবহার করুন :

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

আমি ভেবেছিলাম ps -o pcpu axপ্রতিটি চলমান প্রক্রিয়াটির%% যোগ করে আপনি এই তথ্যটি পেতে পারেন। দুর্ভাগ্যক্রমে, এখানেps বর্ণিত হিসাবে , "প্রক্রিয়াটির পুরো জীবদ্দশায় চলমান সময়ের শতকরা পরিমাণ ফিরিয়ে দেয়" যা আপনার প্রয়োজন তা নয়।


সম্পাদনা

আপনার মন্তব্যের ভিত্তিতে, আপনার সংস্করণটি topআমার থেকে আলাদা এবং আপনার পরিবর্তে এটি ব্যবহার করা উচিত:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

এবং স্থানীয়করণের সমস্যাগুলি এড়াতে লোকাল সিটিতে সেট করুন:

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

আমি আমার উত্তরটি মুছলাম কারণ আপনি যা বলেছেন তা সঠিক। এটি একটি কার্যকর পদ্ধতি বলে মনে হচ্ছে।
নাথান সি

@ নাথানসি আমি ভেবেছিলাম আপনার উত্তরটিও সঠিক ছিল, আমি উত্তর দিয়েছিলাম এটিই ছিল। তারপরে আমি এটি পরীক্ষা করে অবাক হয়েছি :)
টেরডন

@ এটারডন আপনার বিস্তারিত উত্তরের জন্য ধন্যবাদ ... উপরের কমান্ডটির জন্য আউটপুট পেতে পারিনি। এখানে কি কোন সিনট্যাক্টিকাল পরিবর্তন প্রয়োজন ..
ফ্যাসিল

@ ফ্যাসিল না, এটি কাজ করা উচিত। সমস্যাটা কি? কোন ত্রুটি বার্তা?
টেরডন

@terdon আমি সম্পূর্ণ কমান্ডের জন্য কোনও আউটপুট পাই না .. # টপ-বিএন ২-ডি 0.01 এর সাথে আমি সম্পূর্ণ ফলাফল পেয়েছি তবে গ্রেপ '^% সিপিইউ' যুক্ত করার পরে আমি কোনও আউটপুট দেখি না কেবল প্রম্পটগুলি কোনও ফলাফল দেয় না ত্রুটি ...
ফ্যাসিল

9

sarএটি করার চূড়ান্ত উপায়। সুতরাং উদাহরণস্বরূপ sar -uকিছু এই আউটপুট হবে:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

আপনি কোন লিনাক্স ব্যবহার করেন তা বলবেন না তবে সেন্টোস / রেডহ্যাটের জন্য আপনাকে sysstatপ্যাকেজটি ইনস্টল করতে হবে এবং আমি মনে করি এটি ডেবিয়ান / উবুন্টুতেও একই রকম।

আপনি পরিসংখ্যান অ্যাডহক সংগ্রহ করতে সার ব্যবহার করতে পারেন :

sar -o /tmp/sar.out 60 600

প্রতি 60 সেকেন্ডে 600 বার, তাই 600 মিনিটের পরিসংখ্যান সংগ্রহ করবে।


1
আপনার সম্ভবত এটি অন্যরকম বাক্যাংশ করা উচিত। আপনার পোস্ট করা লাইনটি প্রতি 60 সেকেন্ডে 600 বার পরিমাপ করবে। আপনার পোস্টটি আমি যেভাবে পড়লাম তা হ'ল 600 একটি সময়কাল, সুতরাং আমি যদি 600 ডলার রাখি তবে এটি প্রতি 30 সেকেন্ড সময় নিতে পারে 600 মিনিটের জন্য, তবে এটি প্রতি 30 সেকেন্ডে 600 বার সময় নিতে পারে।
জেমস ম্যাকডোনেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.