Pengantar
Linux cukup populer untuk utilitas baris perintahnya, yang tidak hanya membuat tugas apa pun menjadi lebih mudah, tetapi juga menghemat banyak waktu, yang jika tidak, akan terbuang sia-sia dalam utilitas berbasis UI grafis.
Ini adalah salah satu alasan mengapa Linux adalah sistem operasi pilihan untuk server dan mesin administratif. Gabungkan pengetahuan tentang perintah Linux dan skrip shell dan Anda memiliki perangkat administrasi sistem yang tepat untuk Anda.
Anda mungkin telah memperhatikan bahwa terkadang sistem Anda menghabiskan terlalu banyak memori, yang membuat aplikasi Anda lambat atau tidak responsif.
Menurut Anda apa pendekatan terbaik untuk mengidentifikasi proses yang menghabiskan lebih banyak memori di mesin Linux?
Jadi Ini dapat dengan mudah diidentifikasi menggunakan perintah teratas dan perintah ps dan kami akan menjelaskan cara menggunakan dua perintah ini untuk mengidentifikasi proses mana yang memakan semua sumber daya di sistem Anda.
Hari ini kita akan melihat cara melihat memori terberat dan proses yang memakan sumber daya CPU di Linux.
Mencantumkan Semua Proses yang Berjalan di Linux
Kami akan menjelaskan tiga metode untuk mencapai itu
1-Mencantumkan Proses Linux Teratas berdasarkan Memori dan Penggunaan CPU menggunakan “ps”
Jadi perintah ps memiliki banyak opsi dan argumen yang tersedia untuk menampilkan output dalam format yang berbeda. Namun, itu bisa dijalankan dengan argumen 'aux' untuk mendapatkan gambaran umum tentang proses yang berjalan.
# ps aux
Kami akan menggunakan argumen ‘–sort’ untuk mengurutkan output berdasarkan memori dan penggunaan CPU.
Sintaks untuk menggunakan argumen sort adalah:
# ps aux --sort <column_name>
Demikian pula, untuk membalikkan pengurutan output, berikut ini dapat digunakan:
# ps aux --sort -<column_name>
Karena kita menginginkan proses teratas berdasarkan penggunaan memori dan CPU, kita akan mengurutkan output secara terbalik, dan menempatkan kolom ini sebagai argumen nama kolom.
Temukan Proses Berjalan Teratas berdasarkan Penggunaan Memori
$ ps aux --sort -%mem
Temukan Proses Berjalan Teratas berdasarkan Penggunaan CPU
$ ps aux --sort -%cpu
Terakhir, untuk membatasi jumlah proses yang ditampilkan hingga 10, kami menyalurkan output ke perintah kepala .
Untuk %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 ~]#
Untuk %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 ~]#
Juga
Gunakan format perintah 'ps' di bawah ini untuk memasukkan informasi spesifik tentang proses tersebut dalam output:
[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 ~]$
Jika Anda hanya ingin melihat nama perintah alih-alih jalur absolut dari perintah, gunakan format perintah 'ps' berikut:
[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 ~]$
Bagi saya, saya menyarankan Anda untuk menggunakan perintah ini untuk mendapatkan proses teratas.
[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-Mencantumkan Proses Linux Teratas berdasarkan Memori dan Penggunaan CPU menggunakan “top”
Perintah 'top' Linux adalah perintah terbaik dan banyak digunakan yang digunakan semua orang untuk memantau kinerja sistem Linux.
Ini menampilkan tampilan real-time dari proses sistem yang berjalan pada antarmuka interaktif.
Anda harus menjalankan perintah teratas dalam mode batch untuk mengidentifikasi proses yang paling banyak memakan memori di 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 ~]#
Jika Anda hanya ingin melihat nama perintah alih-alih jalur absolut dari perintah, gunakan format perintah teratas di bawah ini:
[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-Memeriksa Proses yang menghabiskan banyak memori di Linux menggunakan perintah 'ps_mem'
Utilitas ps_mem digunakan untuk menampilkan memori inti yang digunakan per program (bukan per proses).
Utilitas ini memungkinkan Anda untuk memeriksa berapa banyak memori yang digunakan per program.
Ini menghitung jumlah memori pribadi dan bersama terhadap suatu program dan mengembalikan total memori yang digunakan dengan cara yang paling tepat.
Ini menggunakan logika berikut untuk menghitung penggunaan RAM. Total RAM =sum (RAM pribadi untuk proses program) + jumlah (RAM bersama untuk proses program)
[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 ~]#
Kesimpulan
Dalam artikel ini, kami melihat bagaimana Anda membuat daftar proses di sistem Anda dan mengurutkannya menurut penggunaan RAM dan CPU dalam bentuk turunan menggunakan utilitas ps, top, dan ps_mem.
Kami melihat cara menggunakan perintah ps untuk melihat proses yang memakan sumber daya teratas di Linux. Perintah ps adalah perintah yang kompleks dan penguasaannya membutuhkan waktu lama dalam mengelola sistem dengan benar dan bahkan untuk menggunakan output dalam skrip otomatisasi.
Kami juga menunjukkan cara menggunakan atas perintah yang digunakan untuk memantau kinerja sistem Linux. dan kami menjalankannya dalam mode batch untuk mengidentifikasi proses yang paling banyak menghabiskan memori di Linux.
Kami juga menggunakan ps_mem utilitas digunakan untuk menampilkan memori inti yang digunakan per program.