মেমরি ব্যবহারের মাধ্যমে প্রক্রিয়াগুলি বাছাই করা


128

আমি সমস্ত প্রক্রিয়াগুলির তালিকা এবং মেমরির মাধ্যমে দেখতে সক্ষম হয়েছি

ps aux 

এবং ভিএসজেড এবং আরএসএসের মধ্য দিয়ে যাচ্ছি

আরএসএসের মানটিতে উত্থিত আদেশ দ্বারা এই কমান্ডের আউটপুটটি সাজানোর কোনও উপায় আছে কি?


প্রত্যাশিত আউটপুট কি হবে? চেকps
রাহুল পাতিল

কিভাবে ব্যবহার করতে অতিরিক্ত উদাহরণ --sortএখানে আছেন: alvinalexander.com/linux/...
SLM

1
সুপারসেট প্রশ্ন, কোনও সরঞ্জাম ব্যবহার করে: স্ট্যাকওভারফ্লো.
com/ প্রশ্নস / 80৮০২৪৮১/২

উত্তর:


223

নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

ps aux --sort -rss

আরও লিনাক্স প্রক্রিয়া মেমরি ব্যবহারের জন্য এখানে চেক করুন


12
দ্রষ্টব্য - আপনি যদি শীর্ষ ফলাফলগুলি দেখতে চান তবে এটি এটির headমতো পাইপ করতে সহায়কps aux --sort -rss | head -n15
ইয়েসোসেফ

3
আমি ত্রুটি পেয়েছি ps: illegal option -- -
মিগুয়েল মোটা

@MiguelMota এই মত যদি: ps aux --sort=rss?
coffeMug

2
@coffeMug কাজ করেনি তবে এটি করেছেps aux | sort -rn -k 6
মিগুয়েল মোটা

1
@CoffeMug সংস্করণটি কীভাবে সন্ধান করবেন তা নিশ্চিত নন তবে আমি ম্যাক ওএসএক্সে আছি তাই সম্ভবত সে কারণেই
মিগুয়েল মোটা

24

একটি দ্রুত এবং ময়লা পদ্ধতি মাত্র নল থেকে আউটপুট হয় ps auxকরার sortকমান্ড প্রয়োগ করুন:

$ ps aux | sort -rn -k 5,6

উদাহরণ

$ ps aux | sort -rn -k 5,6
...
root      1584  0.0  0.0  22540  1236 ?        S    07:04   0:01 hald-addon-storage: polling /dev/sr0 (every 2 sec)
root      1575  0.0  0.0  22536   872 ?        S    07:04   0:00 /usr/libexec/hald-addon-generic-backlight
root      1574  0.0  0.0  22536   880 ?        S    07:04   0:00 /usr/libexec/hald-addon-leds
root      1565  0.0  0.0  22536   876 ?        S    07:04   0:00 /usr/libexec/hald-addon-rfkill-killswitch
saml      2507  0.0  0.0  22232   500 ?        S    07:05   0:00 dbus-launch --sh-syntax --exit-with-session
root      1671  0.0  0.0  22156   936 ?        Ss   07:04   0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
...

এটি কলামের শিরোনামগুলির জন্য পরিচালনা করে না যা আউটপুটটির সাথে মিশে যায় তবে কমান্ড লাইনে মনে রাখা সহজ এবং এই ধরণের আউটপুট ম্যানুয়ালি দেখার সময় আপনি যা চান তা করার একটি গ্রহণযোগ্য উপায়।

উদাহরণ

root      1791  0.0  0.0   4140   536 tty2     Ss+  07:04   0:00 /sbin/mingetty /dev/tty2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       996  0.0  0.0      0     0 ?        S    07:04   0:01 [kdmflush]
root       982  0.0  0.0      0     0 ?        S    07:04   0:00 [kvm-irqfd-clean]

আরও টিপস

একটি অতিরিক্ত টিপ হ'ল সম্পূর্ণ আউটপুটটি অন্য কোনও কমান্ডের মতো পাইপ করা less। এটি আপনাকে একবারে একটি পৃষ্ঠায় তথ্যটি দেখতে এবং আউটপুট থেকে পিছনে পিছনে স্ক্রোল করতে তীরচিহ্নগুলি এবং পৃষ্ঠা আপ / ডাউন কীগুলি ব্যবহার করতে সহায়তা করে।

$ ps aux | sort -rn -k 5,6 | less

যদি আপনার আউটপুট প্রচুর পরিমাণে মোড়ানো থাকে তবে আপনি -Sস্যুইচটিও কম ব্যবহার করতে পারবেন , যা সমস্ত আউটপুটকে পরিবর্তে একক লাইনে থাকতে বাধ্য করবে। তারপরে আপনার তীর কীগুলি সমস্ত দেখতে বাম / ডান / উপরে / নীচে সরাতে ব্যবহার করতে পারেন।

$ ps aux | sort -rn -k 5,6 | less -S

PS এর মধ্যে বাছাই করা

কয়েকটি সংস্করণ psব্যবহারের ক্ষমতা সরবরাহ করে --sort। এই স্যুইচটি এমন কিগুলি গ্রহণ করতে পারে যা একটি +বা একটি দ্বারা প্রিফিক্সযুক্ত -বাছাইয়ের ক্রমকে বোঝায় ... কমপক্ষে সর্বশ্রেষ্ঠ বা সর্বনিম্ন বৃহত্তম।

উদাহরণ

vsz, -rss

$ ps aux --sort=vsz,-rss | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    07:03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    07:03   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    07:03   0:01 [migration/0]
root         5  0.0  0.0      0     0 ?        S    07:03   0:00 [watchdog/0]

+ + Vsz + আরএসএস

$ ps aux --sort=+vsz,+rss | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    07:03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    07:03   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    07:03   0:01 [migration/0]
root         5  0.0  0.0      0     0 ?        S    07:03   0:00 [watchdog/0]

-vsz, -rss

$ ps aux --sort=-vsz,-rss | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1832  0.0  0.0 2088924 3312 ?        Sl   07:04   0:00 /usr/sbin/console-kit-daemon --no-daemon
saml      3517  0.2  1.2 2073196 100492 ?      Sl   07:06   0:34 /home/saml/.dropbox-dist/dropbox
saml      3516  0.0  0.8 2071032 67388 ?       Sl   07:06   0:07 /home/saml/.dropbox-dist/dropbox
saml      2657  0.1  0.7 1580936 57788 ?       Sl   07:05   0:27 nautilus

আপনি কীভাবে কলামগুলি দেখার / প্রক্রিয়া করার প্রত্যাশায় ps সর্বদা আউটপুট sortকরবেন?
ফিলিপ আলভারেজ

PS কোন সংস্করণটি উপর নির্ভর করে
SLM

2
... | lessএকটি ভাল পরামর্শ তবে কখনও কখনও আপনার প্রক্রিয়াটির একটি বিশাল কমান্ড লাইন থাকে এবং এটি আউটপুটকে বিশৃঙ্খলা করে। এই ক্ষেত্রে ... | less -Sআরও ভাল কাজ করে।
অপচয় করুন

@ ওয়েস্ট - ভাল টিপ, কেবল মনে রাখবেন যে -Sকেটে গেছে এবং তাই আপনি যা দেখতে চান তার কিছু হারিয়ে ফেলতে পারেন তবে অন্যথায় ভাল পরামর্শ যদি আপনি কেবল বাম বেশিরভাগ কলামগুলিতে আগ্রহী হন।
slm

@ এসএমএল আমি নিশ্চিত নই যে এটির ক্ষেত্রে এটিই less -S। যখন আপনি ঘনিষ্ঠভাবে lessদেখুন সমস্ত কিছু অদৃশ্য হয়ে যায় তবে আপনি যতক্ষণ ভিউতে থাকবেন ততক্ষণ আপনি উল্লম্বভাবে অনুভূমিকভাবেও স্ক্রোল করতে পারেন। অনুলিপি করা কঠিন হতে পারে, যদিও।
অপচয় করুন

6

এমনকি পিএস ব্যবহৃত প্রকৃত স্মৃতি প্রতিফলিত না করলেও এই আদেশটি বেশ সহায়ক pretty

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'

3

পিএস অক্স --সোর্ট -আরস সুন্দর:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user     5984  0.8  7.4 1632488 296056 ?      Sl   06:30   6:18 /usr/lib/chromium-browser/chromium-browser --type=ren
user    23934 21.7  6.0 1565600 241228 ?      Sl   15:45  40:10 /opt/atom/atom --type=renderer --enable-experimental-
user     5533  0.9  5.1 3154096 206376 ?      SLl  06:30   6:47 /usr/lib/chromium-browser/chromium-browser --enable-p
user    17306  1.7  4.9 1360648 196124 ?      Sl   18:14   0:36 /usr/lib/chromium-browser/chromium-browser --type=ren
user    22272 30.1  4.6 1347784 185032 ?      Sl   18:43   1:54 /usr/lib/chromium-browser/chromium-browser --type=ren
user    19318  0.6  3.3 1304324 133452 ?      Sl   18:27   0:09 /usr/lib/chromium-browser/chromium-browser --type=ren
user    22098  1.0  3.3 1298500 133216 ?      Sl   18:43   0:04 /usr/lib/chromium-browser/chromium-browser --type=ren

তবে আপনি যদি অ্যাপ্লিকেশন অনুসারে মেমরি এবং সিপিইউ ব্যবহারগুলি দেখতে চান (কমান্ড অনুসারে গ্রুপযুক্ত):

python3.6  sum_process_resources.py 
====   CPU%   ====
0. /opt/atom/atom | 27.8
1. /usr/lib/chromium-browser/chromium-browser | 11.2
2. python3.6 | 11.0
3. /opt/google/chrome/chrome | 1.6
4. /usr/lib/xorg/Xorg | 1.4
5. /opt/Franz/franz | 0.7
====   MEM%   ====
0. /usr/lib/chromium-browser/chromium-browser | 37.2
1. /opt/google/chrome/chrome | 11.3
2. /opt/Franz/franz | 10.6
3. /opt/atom/atom | 10.1
4. /usr/lib/xorg/Xorg | 2.0
5. com.google.android.gms.persistent | 1.4
====   RSS MB   ====
0. /usr/lib/chromium-browser/chromium-browser | 1475.07 MB
1. /opt/google/chrome/chrome | 461.35 MB
2. /opt/Franz/franz | 429.04 MB
3. /opt/atom/atom | 402.18 MB
4. /usr/lib/xorg/Xorg | 78.53 MB
5. com.google.android.gms.persistent | 58.02 MB

কোড:

#sum_process_resources.py
from collections import OrderedDict
import subprocess

def run_cmd(cmd_string):
    """Runs commands and saves output to variable"""
    cmd_list = cmd_string.split(" ")
    popen_obj = subprocess.Popen(cmd_list, stdout=subprocess.PIPE)
    output = popen_obj.stdout.read()
    output = output.decode("utf8")
    return output

def sum_process_resources():
    """Sums top X cpu and memory usages grouped by processes"""
    ps_memory, ps_cpu, ps_rss = {}, {}, {}
    top = 6
    output = run_cmd('ps aux').split("\n")
    for i, line in enumerate(output):
        cleaned_list = " ".join(line.split())
        line_list = cleaned_list.split(" ")
        if i > 0 and len(line_list) > 10:
            cpu = float(line_list[2])
            memory = float(line_list[3])
            rss = float(line_list[5])
            command = line_list[10]
            ps_cpu[command] = round(ps_cpu.get(command, 0) + cpu, 2)
            ps_memory[command] = round(ps_memory.get(command, 0) + memory, 2)
            ps_rss[command] = round(ps_rss.get(command, 0) + rss, 2)
    sorted_cpu = OrderedDict(sorted(ps_cpu.items(), key=lambda x: x[1], reverse=True))
    sorted_memory = OrderedDict(sorted(ps_memory.items(), key=lambda x: x[1], reverse=True))
    sorted_rss = OrderedDict(sorted(ps_rss.items(), key=lambda x: x[1], reverse=True))
    print("====   CPU%   ====")
    for i, k in enumerate(sorted_cpu.items()):
        if i < top:
            print("{}. {} | {}".format(i, k[0], k[1]))
    print("====   MEM%   ====")
    for i, k in enumerate(sorted_memory.items()):
        if i < top:
            print("{}. {} | {}".format(i, k[0], k[1]))
    print("====   RSS MB   ====")
    for i, k in enumerate(sorted_rss.items()):
        if i < top:
            print("{}. {} | {} MB".format(i, k[0], round((k[1]/1024), 2)))


if __name__ == '__main__':
    sum_process_resources()

1

অন্যান্য উত্তরে দেখানো বিএসডি স্টাইলের আর্গুমেন্টের বিকল্প হিসাবে, কেউ ব্যবহার করতে পারেন (কমপক্ষে প্রোপস ব্যবহার করে, দেবিয়ান এবং উবুন্টু দ্বারা চালিত):

ps -eF --sort=-rss

1

সহজ উপায় হটপ ইনস্টল করা হয়

এতে আপনি পিআইডি, পারসেন্টেজ সিপিইউ, এমইএম এর উপর ভিত্তি করে প্রক্রিয়াটি সাজান করতে পারেন

আরো পরিশীলিত


0
  1. topকমান্ড চালান
  2. Shift + F ক্ষেত্রের ভিত্তিতে বাছাই করতে (নীচে সম্পূর্ণ মেনু দেখুন)
  3. nমেমরির ব্যবহারের ভিত্তিতে বাছাই করতে নির্বাচন করুন

এন:% মেম = মেমরির ব্যবহার (আরইএস)


0

প্রক্রিয়া নাম অনুসারে ব্যবহৃত মোট মেমরি কীভাবে আপ করবেন:

কখনও কখনও এমনকি বৃহত্তম একক প্রক্রিয়াগুলির দিকে তাকানো এখনও প্রচুর ব্যবহৃত মেমরির অ্যাকাউন্টবিহীন থাকে। মেমোরি ব্যবহার করে একই রকম অনেক ছোট ছোট প্রক্রিয়া রয়েছে কিনা তা পরীক্ষা করতে আপনি নীচের মতো একটি কমান্ড ব্যবহার করতে পারেন যা একই নামের প্রক্রিয়াগুলি দ্বারা ব্যবহৃত মোট মেমোরিটি যোগ করতে বিশ্রী ব্যবহার করে:

ps -e -orss=,args= |awk '{print $1 " " $2 }'| awk '{tot[$2]+=$1;count[$2]++} END {for (i in tot) {print tot[i],i,count[i]}}' | sort -n

যেমন আউটপুট

9344 docker 1
9948 nginx: 4
22500 /usr/sbin/NetworkManager 1
24704 sleep 69
26436 /usr/sbin/sshd 15
34828 -bash 19
39268 sshd: 10
58384 /bin/su 28
59876 /bin/ksh 29
73408 /usr/bin/python 2
78176 /usr/bin/dockerd 1
134396 /bin/sh 84
5407132 bin/naughty_small_proc 1432
28061916 /usr/local/jdk/bin/java 7
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.