GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung

Einführung

Linux ist sehr beliebt für seine Befehlszeilen-Dienstprogramme, die nicht nur jede Aufgabe erleichtern, sondern auch viel Zeit sparen, die sonst in auf grafischen Benutzeroberflächen basierenden Dienstprogrammen verschwendet wird.

Dies ist einer der Gründe, warum Linux ist ein bevorzugtes Betriebssystem für Server und Verwaltungsmaschinen. Kombinieren Sie das Wissen über Linux-Befehle und Shell-Scripting, und Sie haben ein geeignetes Toolkit für die Systemverwaltung zur Verfügung.

Sie haben vielleicht bemerkt, dass Ihr System manchmal zu viel Speicher verbraucht, wodurch Ihre Anwendung langsam wird oder nicht mehr reagiert.

Was wäre Ihrer Meinung nach der beste Ansatz, um die Prozesse zu identifizieren, die auf einem Linux-Rechner mehr Speicher verbrauchen?

Dies kann also leicht mit dem top-Befehl identifiziert werden und den ps-Befehl und wir erklären, wie Sie diese beiden Befehle verwenden, um zu erkennen, welche Prozesse alle Ressourcen Ihres Systems verbrauchen.

Heute werden wir sehen, wie man die am stärksten speicher- und CPU-Ressourcen verbrauchenden Prozesse in Linux erkennt.

Alle laufenden Prozesse in Linux auflisten

Wir werden drei Methoden erläutern, um dies zu erreichen

1-Top-Linux-Prozesse nach Speicher- und CPU-Nutzung auflisten mit „ps“

Also der ps-Befehl hat viele Optionen und Argumente zur Verfügung, um die Ausgabe in verschiedenen Formaten anzuzeigen. Es kann jedoch einfach mit dem Argument ‘aux’ ausgeführt werden um einen allgemeinen Überblick über laufende Prozesse zu erhalten.

# ps aux

Wir verwenden das Argument ‘–sort’ um die Ausgabe nach Speicher- und CPU-Auslastung zu sortieren.

Die Syntax für die Verwendung des Sortierarguments lautet:

# ps aux --sort <column_name>

Auf ähnliche Weise kann Folgendes verwendet werden, um die Ausgabe umzukehren:

# ps aux --sort -<column_name>

Da wir die Top-Prozesse nach Speicher- und CPU-Auslastung wollen, werden wir die Ausgabe umgekehrt sortieren und diese Spalten als Argument für den Spaltennamen verwenden.

Am häufigsten ausgeführte Prozesse nach Speichernutzung suchen

$ ps aux --sort -%mem

Am häufigsten ausgeführte Prozesse nach CPU-Auslastung finden

$ ps aux --sort -%cpu

Um schließlich die Anzahl der angezeigten Prozesse auf 10 zu begrenzen, leiten wir die Ausgabe an den head-Befehl weiter .

Für %mem

[root@unixcop ~]# ps aux --sort -%mem | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         935  0.0  2.2 305600 42468 ?        Ssl  08:40   0:01 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
root         936  0.0  2.1 229132 40776 ?        S    08:40   0:00 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root         964  0.0  1.5 416596 28384 ?        Ssl  08:40   0:00 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
apache      1056  0.0  1.4 1959764 27272 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
polkitd      867  0.0  1.3 1631160 25108 ?       Ssl  08:40   0:00 /usr/lib/polkit-1/polkitd --no-debug
postgres     985  0.0  1.3 287128 24564 ?        Ss   08:40   0:00 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
apache      1055  0.0  1.2 1828628 23344 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache      1054  0.0  1.2 1828628 23152 ?       Sl   08:40   0:00 /usr/sbin/httpd -DFOREGROUND
root         949  0.0  1.0 391680 19140 ?        Ssl  08:40   0:00 /usr/sbin/NetworkManager --no-daemon
[root@unixcop ~]# 

Für %cpu

[root@unixcop ~]# ps aux --sort -%cpu | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.7 186172 14128 ?        Ss   08:39   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root        1839  0.1  0.0      0     0 ?        I    08:53   0:02 [kworker/1:1-events]
root           2  0.0  0.0      0     0 ?        S    08:39   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   08:39   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   08:39   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   08:39   0:00 [kworker/0:0H-events_highpri]
root           9  0.0  0.0      0     0 ?        I<   08:39   0:00 [mm_percpu_wq]
root          10  0.0  0.0      0     0 ?        S    08:39   0:00 [ksoftirqd/0]
root          11  0.0  0.0      0     0 ?        I    08:39   0:01 [rcu_sched]
[root@unixcop ~]# 

Auch

Verwenden Sie das unten stehende ‚ps‘-Befehlsformat, um spezifische Informationen zu solchen Prozessen in die Ausgabe aufzunehmen:

[qadry@rhel-pc ~]$ ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head
    PID    PPID %MEM %CPU CMD
   4187       1 15.0  7.1 /usr/lib/vmware/bin/vmware-vmx -s vmx.stdio.keep=TRUE -# product=1;name=VMware Workstation;version=16.1.2;buildnumber=17966106;licensename=VMware Workstation;licenseversion=16.0; -@ duplex=3;msgs=ui /run/media/qadry/New Volume/VMs/CentOS 8 64-bit/CentOS 8 64-bit.vmx
   3128    2307  7.2  9.0 /usr/lib64/firefox/firefox
   3200    3128  7.0  8.0 /usr/lib64/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   1927       1  5.3  0.9 /usr/libexec/packagekitd
   5814    3128  4.4  3.3 /usr/lib64/firefox/firefox -contentproc -childID 23 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   5438    3128  3.7  1.3 /usr/lib64/firefox/firefox -contentproc -childID 21 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   2794    2191  3.2  0.4 /usr/bin/gnome-software --gapplication-service
   5047    3128  3.2  1.3 /usr/lib64/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10019 -prefMapSize 220513 -parentBuildID 20210716063838 -appdir /usr/lib64/firefox/browser 3128 tab
   2307    2191  2.7  3.0 /usr/bin/gnome-shell
[qadry@rhel-pc ~]$ 

Wenn Sie nur den Befehlsnamen anstelle des absoluten Pfads des Befehls sehen möchten, verwenden Sie das folgende ‚ps‘-Befehlsformat:

[qadry@rhel-pc ~]$ ps -eo pid,ppid,%mem,%cpu,comm --sort=-%mem | head
    PID    PPID %MEM %CPU COMMAND
   4187       1 15.0  7.1 vmware-vmx
   3128    2307  7.1  9.0 firefox
   3200    3128  6.9  7.9 file:// Content
   1927       1  5.3  0.9 packagekitd
   5814    3128  4.4  3.3 Web Content
   5438    3128  3.7  1.3 Web Content
   2794    2191  3.2  0.4 gnome-software
   5047    3128  3.2  1.3 Web Content
   2307    2191  2.7  3.0 gnome-shell
[qadry@rhel-pc ~]$ 

Für mich habe ich Ihnen empfohlen, diesen Befehl zu verwenden, um den besten Prozess zu erzielen.

[qadry@rhel-pc ~]$ ps -eo pid,ppid,cmd,comm,%mem,%cpu --sort=-%mem | head
    PID    PPID CMD                         COMMAND         %MEM %CPU
   4187       1 /usr/lib/vmware/bin/vmware- vmware-vmx      15.0  7.9
   3128    2307 /usr/lib64/firefox/firefox  firefox          7.1  9.3
   3200    3128 /usr/lib64/firefox/firefox  file:// Content  6.3  6.4
   1927       1 /usr/libexec/packagekitd    packagekitd      5.3  1.0
   5814    3128 /usr/lib64/firefox/firefox  Web Content      4.1  2.8
   5438    3128 /usr/lib64/firefox/firefox  Web Content      3.7  1.5
   2794    2191 /usr/bin/gnome-software --g gnome-software   3.2  0.4
   5047    3128 /usr/lib64/firefox/firefox  Web Content      3.2  1.5
   4515    2307 /snap/spotify/46/usr/share/ spotify          2.6  3.2
[qadry@rhel-pc ~]$ 

2-Listen Sie die Top-Linux-Prozesse nach Speicher- und CPU-Auslastung auf, indem Sie „top“ verwenden

Der Linux-Befehl „top“ ist der beste und am weitesten verbreitete Befehl, den jeder verwendet, um die Linux-Systemleistung zu überwachen.

Es zeigt eine Echtzeitansicht der Systemprozesse, die auf der interaktiven Schnittstelle ausgeführt werden.

Sie sollten den top-Befehl im Stapelmodus ausführen um die wichtigsten speicherverbrauchenden Prozesse in Linux zu identifizieren.

[root@unixcop ~]# top -c -b -o +%MEM | head -n 20 | tail -15

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    935 root      20   0  305600  42468  18448 S   0.0   2.3   0:01.00 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
    936 root      20   0  229132  40776  39104 S   0.0   2.2   0:00.28 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
    964 root      20   0  416596  28384  15104 S   0.0   1.5   0:00.66 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
   1056 apache    20   0 1959764  27272   9976 S   0.0   1.5   0:00.99 /usr/sbin/httpd -DFOREGROUND
    867 polkitd   20   0 1631160  25108  17636 S   0.0   1.3   0:00.23 /usr/lib/polkit-1/polkitd --no-debug
    985 postgres  20   0  287128  24564  23188 S   0.0   1.3   0:00.14 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
   1055 apache    20   0 1828628  23344  10124 S   0.0   1.2   0:01.04 /usr/sbin/httpd -DFOREGROUND
   1054 apache    20   0 1828628  23152   9932 S   0.0   1.2   0:01.04 /usr/sbin/httpd -DFOREGROUND
    949 root      20   0  391680  19140  16660 S   0.0   1.0   0:00.20 /usr/sbin/NetworkManager --no-daemon
   1053 apache    20   0  664748  17780   9564 S   0.0   1.0   0:00.19 /usr/sbin/httpd -DFOREGROUND
    933 root      20   0  227456  15172  12668 S   0.0   0.8   0:00.14 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=fi+
    745 root      20   0  128836  14676   9132 S   0.0   0.8   0:00.73 /usr/lib/systemd/systemd-udevd
    871 root      20   0  218964  14416  12368 S   0.0   0.8   0:00.08 /usr/sbin/sssd -i --logger=files
[root@unixcop ~]# 

Wenn Sie nur den Befehlsnamen anstelle des absoluten Pfads des Befehls sehen möchten, verwenden Sie das folgende obere Befehlsformat:

[root@unixcop ~]# top -b -o +%MEM | head -n 20 | tail -15

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    935 root      20   0  305600  42468  18448 S   0.0   2.3   0:01.00 firewalld
    936 root      20   0  229132  40776  39104 S   0.0   2.2   0:00.28 sssd_nss
    964 root      20   0  416596  28384  15104 S   0.0   1.5   0:00.66 tuned
   1056 apache    20   0 1959764  27272   9976 S   6.7   1.5   0:01.01 httpd
    867 polkitd   20   0 1631160  25108  17636 S   0.0   1.3   0:00.23 polkitd
    985 postgres  20   0  287128  24564  23188 S   0.0   1.3   0:00.14 postmaster
   1055 apache    20   0 1828628  23344  10124 S   0.0   1.2   0:01.06 httpd
   1054 apache    20   0 1828628  23152   9932 S   0.0   1.2   0:01.06 httpd
    949 root      20   0  391680  19140  16660 S   0.0   1.0   0:00.20 NetworkManager
   1053 apache    20   0  664748  17780   9564 S   0.0   1.0   0:00.19 httpd
    933 root      20   0  227456  15172  12668 S   0.0   0.8   0:00.14 sssd_be
    745 root      20   0  128836  14676   9132 S   0.0   0.8   0:00.73 systemd-udevd
    871 root      20   0  218964  14416  12368 S   0.0   0.8   0:00.08 sssd
[root@unixcop ~]# 

3-Überprüfen von Prozessen mit hohem Speicherverbrauch in Linux mit dem Befehl „ps_mem“

Das ps_mem-Dienstprogramm wird verwendet, um den pro Programm (nicht pro Prozess) verwendeten Kernspeicher anzuzeigen.

Mit diesem Dienstprogramm können Sie überprüfen, wie viel Speicher pro Programm verwendet wird.

Es berechnet die Menge an privatem und gemeinsam genutztem Speicher für ein Programm und gibt den insgesamt verwendeten Speicher auf die am besten geeignete Weise zurück.

Es verwendet die folgende Logik, um die RAM-Nutzung zu berechnen. Gesamt-RAM =Summe (privater RAM für Programmprozesse) + Summe (gemeinsam genutzter RAM für Programmprozesse)

[root@unixcop ~]# ps_mem
 Private  +   Shared  =  RAM used	Program

912.0 KiB + 122.0 KiB =   1.0 MiB	auditd
696.0 KiB + 340.5 KiB =   1.0 MiB	chronyd
952.0 KiB + 157.0 KiB =   1.1 MiB	crond
844.0 KiB + 425.0 KiB =   1.2 MiB	irqbalance
  1.3 MiB + 478.5 KiB =   1.7 MiB	dbus-daemon
  1.0 MiB + 874.5 KiB =   1.9 MiB	login
  1.2 MiB +   1.3 MiB =   2.5 MiB	bash (2)
  1.8 MiB +   1.2 MiB =   3.1 MiB	systemd-journald
  2.4 MiB +   1.1 MiB =   3.4 MiB	systemd-logind
  1.8 MiB +   1.7 MiB =   3.5 MiB	(sd-pam)
  2.8 MiB + 853.0 KiB =   3.7 MiB	vmtoolsd
  2.2 MiB +   1.8 MiB =   4.0 MiB	sssd
  3.6 MiB + 839.5 KiB =   4.4 MiB	VGAuthService
  3.1 MiB +   1.8 MiB =   4.9 MiB	sssd_be
  1.7 MiB +   3.9 MiB =   5.6 MiB	sshd (3)
  5.6 MiB + 935.0 KiB =   6.5 MiB	rsyslogd
  6.5 MiB +   1.1 MiB =   7.6 MiB	systemd-udevd
  3.5 MiB +   4.6 MiB =   8.1 MiB	systemd (2)
  6.6 MiB +   1.8 MiB =   8.4 MiB	NetworkManager
 13.3 MiB +   2.6 MiB =  15.9 MiB	tuned
 14.9 MiB +   1.6 MiB =  16.5 MiB	polkitd
  8.9 MiB +  12.8 MiB =  21.7 MiB	postmaster (8)
 25.6 MiB +   2.9 MiB =  28.5 MiB	firewalld
 27.6 MiB +   2.0 MiB =  29.6 MiB	sssd_nss
 44.1 MiB +   9.5 MiB =  53.7 MiB	httpd (6)
---------------------------------
                        239.4 MiB
=================================
[root@unixcop ~]# 

Schlussfolgerung

In diesem Artikel haben wir uns angesehen, wie Sie Prozesse auf Ihrem System auflisten und sie mit den Dienstprogrammen ps, top und ps_mem in untergeordneter Form nach RAM- und CPU-Auslastung sortieren.

Wir haben gesehen, wie man den ps-Befehl verwendet um die ressourcenintensivsten Prozesse in Linux anzuzeigen. Der ps-Befehl ist ein komplexer Befehl und seine Beherrschung trägt wesentlich zur ordnungsgemäßen Verwaltung des Systems und sogar zur Verwendung der Ausgabe in einem Automatisierungsskript bei.

Außerdem zeigen wir, wie man top verwendet Befehl die zur Überwachung der Linux-Systemleistung verwendet wurde. und wir haben es im Stapelmodus ausgeführt, um die Prozesse mit dem größten Speicherverbrauch in Linux zu identifizieren.

Außerdem haben wir das ps_mem verwendet Dienstprogramm wird verwendet, um den pro Programm verbrauchten Kernspeicher anzuzeigen.


Linux
  1. Finden Sie die Top 15 Prozesse nach Speichernutzung mit „top“ im Batch-Modus

  2. Finden Sie die am häufigsten ausgeführten Prozesse nach höchster Speicher- und CPU-Auslastung in Linux

  3. Finden Sie die Top 10 der laufenden Prozesse nach Speicher- und CPU-Auslastung

  4. CPU-Auslastung und Speicherauslastung eines einzelnen Prozesses unter Linux abrufen?

  5. Wie kann ich die Top-Prozesse nach tatsächlicher Speichernutzung sortiert anzeigen?

So finden Sie die am häufigsten ausgeführten Prozesse nach Speichernutzung

Wie wird die Top/htop-Speichernutzung interpretiert?

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux

So sortieren Sie den obersten Befehl basierend auf der Speichernutzung

Speicherauslastung des TOP-Befehls

Wie sind CPU-Zeit und CPU-Auslastung gleich?