GNU/Linux >> Znalost Linux >  >> Linux

Jak najít nejběžnější procesy podle využití paměti a CPU

Úvod

Linux je docela populární pro své nástroje příkazového řádku, které nejen usnadňují jakýkoli úkol po ruce, ale také šetří spoustu času, který se jinak plýtvá v nástrojích založených na grafickém uživatelském rozhraní.

To je jeden z důvodů, proč Linux je preferovaný operační systém pro servery a administrativní stroje. Spojte znalosti linuxových příkazů a skriptování shellu a máte k dispozici řádnou sadu nástrojů pro správu systému.

Možná jste si všimli, že váš systém někdy spotřebovává příliš mnoho paměti, což způsobuje, že vaše aplikace je pomalá nebo nereaguje.

Jaký by byl podle vás nejlepší přístup k identifikaci procesů, které spotřebovávají více paměti v počítači se systémem Linux?

Toto lze snadno identifikovat pomocí top příkazu a příkaz ps a vysvětlíme, jak používat tyto dva příkazy k identifikaci, které procesy spotřebovávají všechny zdroje ve vašem systému.

Dnes se podíváme, jak v Linuxu vidět nejtěžší procesy náročné na paměť a CPU.

Vypsat všechny běžící procesy v Linuxu

Vysvětlíme tři způsoby, jak toho dosáhnout

1-Seznam nejlepších linuxových procesů podle využití paměti a CPU pomocí „ps“

Takže příkaz ps má k dispozici mnoho možností a argumentů pro zobrazení výstupu v různých formátech. Lze jej však jednoduše spustit s argumentem ‘aux‘ získat obecný přehled o běžících procesech.

# ps aux

Použijeme argument ‘–sort’ seřadit výstup podle paměti a využití CPU.

Syntaxe pro použití argumentu řazení je:

# ps aux --sort <column_name>

Podobně pro obrácené řazení výstupu lze použít následující:

# ps aux --sort -<column_name>

Protože chceme nejvyšší procesy podle paměti a využití CPU, seřadíme výstup obráceně a tyto sloupce vložíme jako argument názvu sloupce.

Najděte nejběžnější procesy podle využití paměti

$ ps aux --sort -%mem

Najděte nejběžnější procesy podle využití CPU

$ ps aux --sort -%cpu

Nakonec, abychom omezili počet zobrazených procesů na 10, převedeme výstup do příkazu head .

Pro %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 ~]# 

Pro %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 ~]# 

Také

Pomocí níže uvedeného formátu příkazu „ps“ zahrňte do výstupu konkrétní informace o takových procesech:

[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 ~]$ 

Pokud chcete místo absolutní cesty příkazu vidět pouze název příkazu, použijte následující formát příkazu „ps“:

[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 ~]$ 

Pro mě jsem vám doporučil použít tento příkaz k získání nejvyššího procesu.

[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-Seznam nejlepších linuxových procesů podle využití paměti a CPU pomocí „top“

Linuxový „top“ příkaz je nejlepší a široce používaný příkaz, který každý používá ke sledování výkonu systému Linux.

Zobrazuje pohled v reálném čase na systémové procesy běžící na interaktivním rozhraní.

Měli byste spustit top příkaz v dávkovém režimu k identifikaci procesů s nejvyšší spotřebou paměti v Linuxu.

[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 ~]# 

Pokud chcete místo absolutní cesty příkazu vidět pouze název příkazu, použijte níže uvedený horní formát příkazu:

[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-Kontrola procesů s vysokou spotřebou paměti v Linuxu pomocí příkazu „ps_mem“

Nástroj ps_mem se používá k zobrazení paměti jádra použité na program (nikoli na proces).

Tento nástroj vám umožňuje zkontrolovat, kolik paměti používá program.

Vypočítá množství soukromé a sdílené paměti oproti programu a vrátí celkovou použitou paměť nejvhodnějším způsobem.

K výpočtu využití paměti RAM používá následující logiku. Celková RAM =součet (soukromá RAM pro programové procesy) + součet (sdílená RAM pro programové procesy)

[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 ~]# 

Závěr

V tomto článku jsme se podívali na to, jak uvádíte procesy ve vašem systému a třídíte je podle využití paměti RAM a CPU v podobě potomků pomocí utilit ps, top a ps_mem.

Viděli jsme, jak používat příkaz ps vidět procesy s nejvyšší spotřebou zdrojů v Linuxu. příkaz ps je komplexní příkaz a jeho zvládnutí vede dlouhou cestu ke správné správě systému a dokonce i k použití výstupu v automatizačním skriptu.

Také ukážeme, jak používat top příkaz který slouží k monitorování výkonu systému Linux. a spustili jsme jej v dávkovém režimu, abychom identifikovali procesy s nejvyšší spotřebou paměti v Linuxu.

Také jsme použili ps_mem utilita se používá k zobrazení paměti jádra použité na program.


Linux
  1. Najděte 15 nejlepších procesů podle využití paměti pomocí „top“ v dávkovém režimu

  2. Najděte 10 nejběžnějších procesů podle využití paměti a CPU

  3. Jak zjistit využití CPU

  1. Najděte nejběžnější procesy podle nejvyššího využití paměti a CPU v Linuxu

  2. Načíst využití CPU a paměti jedním procesem v Linuxu?

  3. Jak zobrazit nejlepší procesy seřazené podle skutečného využití paměti?

  1. Jak zjistit využití uživatelské paměti v linuxu

  2. ps a top dávají různé využití CPU

  3. Jak zjistit, který proces způsobuje vysoké využití procesoru