はじめに
Linux コマンドラインユーティリティで非常に人気があり、手元のタスクを簡単にするだけでなく、多くの時間を節約できます。これは、グラフィカルUIベースのユーティリティでは無駄になります。
これがLinuxの理由の1つです。 サーバーおよび管理マシンに推奨されるオペレーティングシステムです。 Linuxコマンドとシェルスクリプトの知識を組み合わせると、システム管理の適切なツールキットを自由に使用できます。
システムがメモリを大量に消費し、アプリケーションの速度が低下したり、応答しなくなったりする場合があることに気付いたかもしれません。
Linuxマシンでより多くのメモリを消費しているプロセスを特定するための最良のアプローチは何だと思いますか?
したがって、これはtopコマンドを使用して簡単に識別できます およびpsコマンド そして、これら2つのコマンドを使用して、システム上のすべてのリソースを消費しているプロセスを特定する方法を説明します。
今日は、Linuxで最も重いメモリとCPUリソースを消費するプロセスを確認する方法を説明します。
Linuxで実行中のすべてのプロセスを一覧表示する
それを実現するための3つの方法を説明します
1-メモリとCPU使用率別に上位のLinuxプロセスを一覧表示する 「ps」を使用する
したがって、psコマンド さまざまな形式で出力を表示するために使用できる多くのオプションと引数があります。ただし、引数「aux」を使用して簡単に実行できます。 実行中のプロセスの一般的な概要を取得します。
# ps aux
引数‘– sort’を使用します メモリとCPU使用率で出力を並べ替えます。
sort引数を使用するための構文は次のとおりです。
# ps aux --sort <column_name>
同様に、出力を逆ソートするには、次を使用できます。
# ps aux --sort -<column_name>
メモリとCPU使用率で上位のプロセスが必要なため、出力を逆順に並べ替え、これらの列を列名の引数として配置します。
メモリ使用量で上位の実行中のプロセスを検索
$ ps aux --sort -%mem
CPU使用率別に実行中の上位プロセスを検索
$ ps aux --sort -%cpu
最後に、表示されるプロセスの数を10に制限するために、出力をheadコマンドにパイプします。 。
%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 ~]#
%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 ~]#
また
以下の「ps」コマンド形式を使用して、そのようなプロセスに関する特定の情報を出力に含めます。
[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 ~]$
コマンドの絶対パスではなくコマンド名のみを表示する場合は、次の「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 ~]$
私にとっては、このコマンドを使用してトッププロセスを取得することをお勧めします。
[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-「トップ」を使用してメモリとCPU使用率別に上位のLinuxプロセスを一覧表示する
Linuxの「top」コマンドは、Linuxシステムのパフォーマンスを監視するために誰もが使用する最も広く使用されているコマンドです。
インタラクティブインターフェイスで実行されているシステムプロセスのリアルタイムビューが表示されます。
バッチモードでtopコマンドを実行する必要があります Linuxで最もメモリを消費するプロセスを特定するため。
[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 ~]#
コマンドの絶対パスではなくコマンド名のみを表示する場合は、以下の上位のコマンド形式を使用してください。
[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-「ps_mem」コマンドを使用してLinuxでメモリを大量に消費するプロセスを確認する
ps_memユーティリティ (プロセスごとではなく)プログラムごとに使用されるコアメモリを表示するために使用されます。
このユーティリティを使用すると、プログラムごとに使用されているメモリの量を確認できます。
プログラムに対してプライベートメモリと共有メモリの量を計算し、使用されたメモリの合計を最も適切な方法で返します。
次のロジックを使用してRAM使用量を計算します。合計RAM=合計(プログラムプロセス用のプライベートRAM)+合計(プログラムプロセス用の共有RAM)
[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 ~]#
結論
この記事では、システム上のプロセスを一覧表示し、ps、top、ps_memユーティリティを使用して、RAMとCPUの使用量に応じて子孫形式でプロセスを並べ替える方法について説明しました。
psコマンドの使用方法を見ました Linuxでリソースを消費する上位のプロセスを確認します。 psコマンド は複雑なコマンドであり、それを習得することは、システムを適切に管理する上で、さらには自動化スクリプトで出力を使用するためにも大いに役立ちます。
また、トップの使用方法も示します コマンド これは、Linuxシステムのパフォーマンスを監視するために使用されていました。 Linuxでメモリを最も消費しているプロセスを特定するために、バッチモードで実行しました。
また、 ps_memを使用しました ユーティリティ プログラムごとに使用されるコアメモリを表示するために使用されます。