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.