লিনাক্সে একক প্রক্রিয়ার সিপিইউ ব্যবহার এবং মেমরির ব্যবহার পুনরুদ্ধার করবেন?


164

আমি লিনাক্সে একক প্রক্রিয়ার সিপিইউ এবং মেমরির ব্যবহার পেতে চাই - আমি পিআইডি জানি। আশা করি, আমি প্রতি সেকেন্ডে এটি পেতে পারি এবং এটি 'ওয়াচ' কমান্ড ব্যবহার করে কোনও সিএসভিতে লিখতে পারি। লিনাক্স কমান্ড-লাইন থেকে এই তথ্যটি পেতে আমি কোন আদেশ ব্যবহার করতে পারি?


11
সুপার ব্যবহারকারীর উপর নির্ভর করে।
রিচার্ড

আমরা গেটপিড এবং টপ-পি <কে পিড> কল করতে জিডিবি ব্যবহার করতে পারি?
এমজে

উত্তর:


225
ps -p <pid> -o %cpu,%mem,cmd

(আপনি "সেন্টিমিডি" ছাড়তে পারেন তবে এটি ডিবাগিংয়ে সহায়ক হতে পারে)।

দ্রষ্টব্য যে এটি চলমান সময় ধরে প্রক্রিয়াটির গড় সিপিইউ ব্যবহার দেয়।


6
অনুমানটি হ'ল যদি আপনি এটির নিরীক্ষণের জন্য একক প্রক্রিয়ার মেমরির যথেষ্ট পরিমাণের বিষয়ে যত্নশীল হন তবে এটি উল্লেখযোগ্য পরিমাণ মেমরি ব্যবহার করে যাতে ভাগ করা ম্যাপিংয়ের কারণে অতিরিক্ত যুগল-অফ-মেগাবাইট কোনও সমস্যা নয়।
ক্যাফে

4
@Chaitanya: মাধ্যমে পাইপ এটা| tail -n +2
CAF

11
অথবা আপনি কি --noheader ব্যবহার করতে পারে
hexacyanide

45
মনে রাখবেন যে% সিপিইউ "হ'ল সিপিইউ সময়টি প্রক্রিয়া চলার সময় ভাগ করে (সিপুটাইম / রিয়েলটাইম অনুপাত) শতাংশ হিসাবে প্রকাশিত হয়" (এর ম্যানপেজ দেখুন ps)। এটি কেবলমাত্র সিপিইউ ব্যবহারের সময় আসল নয়topউদাহরণস্বরূপ, এটি যা দেখায় তার থেকে খুব আলাদা হতে পারে ।
xebeche

12
ঠিক উপরের কেবেচে থেকে বলা হয়েছে, ps -e -o pcpu,argsপ্রক্রিয়াটির জীবদ্দশায় সিপিইউ গড় দেখাবে, যা দীর্ঘকাল চলমান প্রক্রিয়া হলে আপনি কী চান তা স্পষ্টতই নয়
অ্যালেক্স এফ


37

প্রক্রিয়াটির নাম ব্যবহার করে আপনি ফলাফলগুলি পেতে পারেন

ps -C chrome -o %cpu,%mem,cmd

-Cবিকল্পটি এটা PID জেনে প্রক্রিয়া নাম ব্যবহার করতে পারেন।


কিভাবে ডি পিড অন্তর্ভুক্ত? ihave% pid $ PID pid, PID কোন ভাগ্য ছাড়াই চেষ্টা করেছেন
আর্নল্ড রোা

@ আর্নল্ডরোয়ার pidকেবল কাজ করা উচিত। ps -C chrome -o pid,%cpu,%mem,cmd
মুহাম্মদ তাহা

28

পিডস্ট্যাট ব্যবহার করুন (সিস্টেস্ট থেকে - লিঙ্কটি দেখুন )।

উদাহরণস্বরূপ প্রতি 5 সেকেন্ডে এই দুটি প্রক্রিয়া আইডি (12345 এবং 11223) ব্যবহার করুন

$ pidstat -h -r -u -v -p 12345,11223 5

2
pidstatএটি একটি দুর্দান্ত কমান্ড নির্দেশ করার জন্য ধন্যবাদ , এবং স্ক্রিপ্টিংয়ের জন্য খুব কার্যকর!
fduff

pidstatএছাড়াও একটি ভাল গড় দেয়। ঠিক লজ্জা আমি এর থেকে আরও মার্জিত উপায় খুঁজে pidstat -u 1 10 | grep ^Average | sort -r -n -b -k 8,8
পাই না

24

ps কমান্ড (ব্যবহার করা উচিত নয়):

top কমান্ড (ব্যবহার করা উচিত):

ব্যবহার করুন topরিয়েল টাইমে CPU ব্যবহার (বর্তমান সংক্ষিপ্ত বিরতি) পেতে:

top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'

প্রতিধ্বনিত হবে: 78.6


প্রক্রিয়ার জীবদ্দশায় গড় হিসাবে নয়, বর্তমান সিপিইউ ব্যবহারের পক্ষে এটিই সবচেয়ে সঠিক উত্তর।
টেড ফেং

15

একটি প্রোগ্রাম আরম্ভ এবং এটি নিরীক্ষণ

এই ফর্মটি কার্যকর যদি আপনি সহজেই একটি নির্বাহযোগ্যকে মাপদণ্ড করতে চান:

topp() (
  $* &>/dev/null &
  pid="$!"
  trap ':' INT
  echo 'CPU  MEM'
  while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
  kill "$pid"
)
topp ./myprog arg1 arg2

এখন আপনি যখন Ctrl + C তে আঘাত করেন তখন এটি প্রোগ্রামটি থেকে বেরিয়ে আসে এবং পর্যবেক্ষণ বন্ধ করে দেয়। নমুনা আউটপুট:

CPU  MEM
20.0  1.3
35.0  1.3
40.0  1.3

সম্পর্কিত: /unix/554/how-to-monitor-cpu-memory-usage-of-a-single-process

উবুন্টু 16.04 এ পরীক্ষিত।


5

আপনি top -bযে পিডটি চান তা ব্যবহার করতে এবং গ্রেপ করতে পারেন ( -bব্যাচের মোডে পতাকা শীর্ষে রয়েছে), বা -pপতাকা ব্যবহার করতে এবং গ্রেপ ব্যবহার না করে পিড নির্দিষ্ট করতে পারে।


5

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

top -b -n 1 -p <PID>

বা প্রক্রিয়া শুধুমাত্র ডেটা এবং শিরোনাম:

top -b -n 1 -p <PID> | tail -3 | head -2

শিরোনাম ছাড়াই:

top -b -n 1 -p <PID> | tail -2 | head -1

3
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr

বা প্রক্রিয়া প্রতি

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr |grep mysql

1

কেবলমাত্র আপনার অ্যাপ্লিকেশনের মেমরির ব্যবহার পেতে (এটি ব্যবহার করা ভাগ করা লাইব্রেরির বিপরীতে, আপনাকে লিনাক্স এসএমএস ইন্টারফেস ব্যবহার করতে হবে)। এই উত্তরটি এটি ভালভাবে ব্যাখ্যা করে


1
ps aux|awk  '{print $2,$3,$4}'|grep PID

যেখানে প্রথম কলামটি হল পিআইডি, দ্বিতীয় কলামের সিপিইউ ব্যবহার, তৃতীয় কলামের মেমরির ব্যবহার।


1
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep

পিআইডি - প্রক্রিয়া আইডি

ইটাইম - প্রক্রিয়া চলমান / লাইভ সময়কাল

% সিপিইউ - সিপিইউ ব্যবহার

% মেমো - স্মৃতি ব্যবহার usage

সেমিডি - কমান্ড

আপনি যে প্রক্রিয়াটি ট্র্যাক করতে চান, প্রক্রিয়াকরণের নাম প্রতিস্থাপন করুন, মাইকিউএল এনজিনেক্স পিএইচপি-এফপিএম ইত্যাদি ...


1

এখানে সমস্ত উত্তর পিআইডি-র জন্য কেবল মেমরির শতাংশ দেখায়।

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

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$6}'"

এই মুদ্রণ:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$6}'                                                                                                                                                                                                          
Thu Jan 25 15:44:13 2018

12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360

সিপিইউ% সহ:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$3,\$6}'"

আউটপুট:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$3,$6}'                                                                                                                                                                                                       
Thu Jan 25 15:46:00 2018

12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360

1

তাদের জন্য যারা নির্বাচিত উত্তরগুলি কার্যকর হয় না তা অবাক করে কিছু সময়ের জন্য সংগ্রাম করেছেন:

ps -p <pid> -o %cpu,%mem

কোনও স্পেস ইবিটুইন %cpu,এবং %mem


1

অন্য কোনও সরঞ্জামের আউটপুট দেখার সময় রিয়েল টাইমে এক বা একাধিক প্রোগ্রাম অনুসরণ করা এটি একটি দুর্দান্ত কৌশল: watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"


1

নিম্নলিখিত কমান্ডটি একটি নির্দিষ্ট প্রক্রিয়ার জন্য প্রতি 40 সেকেন্ডে সিপিইউ এবং মেমরির ব্যবহারের গড় (পিড) পায়

pidstat 40 -ru -p <pid>

আমার ক্ষেত্রে আউটপুট (সিপিইউ ব্যবহারের জন্য প্রথম দুটি লাইন, মেমরির জন্য দ্বিতীয় দুটি লাইন):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java

0

(আপনি যদি ম্যাকওএস ১০.১০ এ থাকেন তবে শীর্ষের সঞ্চিত -c বিকল্পটি ব্যবহার করে দেখুন:

top -c a -pid PID

(এই বিকল্পটি অন্যান্য লিনাক্সে উপলভ্য নয়, বৈজ্ঞানিক লিনাক্স এল 6 এবং আরএইচইএল 6 দিয়ে চেষ্টা করা হয়েছে)


0

উপরে সিপিইউ এবং মেমরি গ্রাস করার প্রক্রিয়াটি উপরে তালিকাবদ্ধ করুন

        ps axo %cpu,%mem,command | sort -nr | head

0

@ ক্যাফের উত্তরের ভিত্তিতে, এটি আমার পক্ষে সুন্দরভাবে কাজ করছে।

প্রদত্ত পিআইডি-র জন্য গড় গণনা করুন:

measure.sh

times=100
total=0
for i in $(seq 1 $times)
do
   OUTPUT=$(top -b -n 1 -d 0.1 -p $1 | tail -1 | awk '{print $9}')
   echo -n "$i time: ${OUTPUT}"\\r
   total=`echo "$total + $OUTPUT" | bc -l`
done
#echo "Average: $total / $times" | bc

average=`echo "scale=2; $total / $times" | bc`
echo "Average: $average"

ব্যবহার:

# send PID as argument
sh measure.sh 3282

-2

লিনাক্সে সিপিইউ এবং মেমরির একক প্রক্রিয়া ব্যবহারের জন্য বা নীচের কমান্ডটি ব্যবহার করে আপনি শীর্ষ 10 সিপিইউ ব্যবহারযোগ্য প্রক্রিয়া পেতে পারেন

PS -aux --sort -pcpu | মাথা -n 11

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