GNU/Linux >> Belajar Linux >  >> Linux

UNIX / Linux:7 Contoh Perintah PS Praktis untuk Pemantauan Proses

Proses adalah contoh program yang sedang berjalan. Linux adalah sistem operasi multitasking, yang berarti bahwa lebih dari satu proses dapat aktif sekaligus. Gunakan perintah ps untuk mengetahui proses apa yang sedang berjalan di sistem Anda.

Artikel ini menjelaskan 7 penggunaan praktis dari perintah ps dan opsinya.

Untuk memantau dan mengontrol proses, Linux menyediakan banyak perintah seperti ps, kill, killall, nice, renice dan perintah top.

1. Daftar Proses yang Sedang Berjalan (ps -ef, ps -aux)

Ini adalah contoh yang umum digunakan dengan perintah ps untuk membuat daftar semua proses yang sedang berjalan di mesin. Contoh berikut menunjukkan opsi perintah ps untuk mendapatkan semua proses.

$ ps -ef
root     26551     5  0 Feb10 ?        00:03:41 [pdflush]
root     26570     5  0 Feb10 ?        00:00:20 [pdflush]
root     30344  3382  0 Feb21 ?        00:00:11 sshd: root@pts/14
root     30365 30344  0 Feb21 pts/14   00:00:02 -bash
root     30393  3382  0 Feb21 ?        00:00:10 sshd: root@pts/15

Dimana:

  • -e untuk menampilkan semua proses.
  • -f untuk menampilkan daftar format lengkap.

Dalam kasus mesin BSD, Anda dapat menggunakan 'ps -aux' akan memberikan rincian tentang semua proses seperti yang ditunjukkan di atas.

$ ps -aux

2. Daftar Proses berdasarkan UID dan Perintah (ps -u, ps -C)

Gunakan opsi -u untuk menampilkan proses yang dimiliki oleh nama pengguna tertentu. Jika Anda memiliki beberapa nama pengguna, pisahkan menggunakan koma. Contoh di bawah ini menampilkan semua proses yang dimiliki oleh pengguna wwwrun, atau postfix.

$ ps -f -u wwwrun,postfix
UID        PID  PPID  C STIME TTY          TIME CMD
postfix   7457  7435  0 Mar09 ?        00:00:00 qmgr -l -t fifo -u
wwwrun    7495  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun    7496  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun    7497  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun    7498  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun    7499  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun   10078  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun   10082  7491  0 Mar09 ?        00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
postfix  15677  7435  0 22:23 ?        00:00:00 pickup -l -t fifo -u

Seringkali ps digunakan dengan grep seperti “ps -aux | grep command” untuk mendapatkan daftar proses dengan perintah yang diberikan.

Tetapi perintah ps itu sendiri memiliki opsi untuk mencapai hal yang sama. Contoh berikut menunjukkan bahwa semua proses yang memiliki tatad.pl dalam eksekusi perintahnya.

$ ps -f -C tatad.pl
UID        PID  PPID  C STIME TTY          TIME CMD
root      9576     1  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9577  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9579  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9580  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9581  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9582  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root     12133  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl

Catatan: Kita dapat membuat alias untuk perintah ps untuk membuat daftar proses berdasarkan perintah, pengguna, atau grup.

3. Buat daftar proses berdasarkan PID atau PPID (ps -p, ps –ppid)

Setiap proses akan diberi ID Proses (PID) yang unik.

Saat Anda meluncurkan beberapa aplikasi, itu mungkin memotong sejumlah proses dan setiap sub proses akan memiliki PID sendiri. Jadi, setiap proses akan memiliki id proses dan id proses induknya sendiri.

Untuk semua proses yang proses fork akan memiliki PPID (pengidentifikasi proses induk) yang sama. Metode berikut digunakan untuk mendapatkan daftar proses dengan PPID tertentu.

$ ps -f --ppid 9576
UID        PID  PPID  C STIME TTY          TIME CMD
root      9577  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9579  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9580  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9581  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root      9582  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl
root     12133  9576  0 Mar09 ?        00:00:00 /opt/tata/perl/bin/perl /opt/tata/bin/tatad.pl

Contoh berikut adalah daftar proses yang telah memberikan PID.

$ ps -f  -p 25009,7258,2426
UID        PID  PPID  C STIME TTY          TIME CMD
root      2426     4  0 Mar09 ?        00:00:00 [reiserfs/0]
root      7258     1  0 Mar09 ?        00:00:00 /usr/sbin/nscd
postfix  25009  7435  0 00:02 ?        00:00:00 pickup -l -t fifo -u

4. Mencantumkan Proses dalam Hirarki (ps –forest)

Contoh di bawah ini menampilkan Id proses dan perintah dalam hierarki. –forest adalah argumen untuk perintah ps yang menampilkan seni ASCII dari pohon proses. Dari pohon ini, kita dapat mengidentifikasi mana proses induk dan proses turunannya yang bercabang secara rekursif.

$ ps -e -o pid,args --forest
  468  \_ sshd: root@pts/7
  514  |   \_ -bash
17484  \_ sshd: root@pts/11
17513  |   \_ -bash
24004  |       \_ vi ./790310__11117/journal
15513  \_ sshd: root@pts/1
15522  |   \_ -bash
 4280  \_ sshd: root@pts/5
 4302  |   \_ -bash

Catatan: Anda juga dapat menggunakan perintah tree dan pstree untuk menampilkan proses dalam struktur pohon yang bagus.

5. Daftar waktu dinding yang telah berlalu untuk proses (ps -o pid,etime=)

Jika Anda ingin mendapatkan waktu yang telah berlalu untuk proses yang sedang berjalan, perintah ps menyediakan etime yang menyediakan waktu yang telah berlalu sejak proses dimulai, dalam bentuk [[dd-]hh:]mm:ss.

Perintah di bawah ini menampilkan waktu yang telah berlalu untuk proses ID 1 (init) dan proses id 29675.

Misalnya “10-22:13:29” pada output mewakili proses yang sedang berjalan selama 10 hari, 22 jam, 13 menit, dan 29 detik. Karena proses init dimulai selama startup sistem, waktu ini akan sama dengan output dari perintah 'uptime'.

# ps -p 1,29675 -o pid,etime=
  PID
    1 10-22:13:29
29675  1-02:58:46

6. Daftar semua utas untuk proses tertentu (ps -L)

Anda bisa mendapatkan daftar utas untuk prosesnya. Saat sebuah proses hang, kita mungkin perlu mengidentifikasi daftar thread yang berjalan untuk proses tertentu seperti yang ditunjukkan di bawah ini.

 $ ps -C java -L -o pid,tid,pcpu,state,nlwp,args
  PID   TID %CPU S NLWP COMMAND
16992 16992  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16993  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16994  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16995  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16996  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16997  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16998  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 16999  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 17000  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 17001  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 17002  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 17003  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 17024  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 15753  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006
16992 15754  0.0 S   15 ../jre/bin/java -Djava.ext.dirs=../jre/lib/ext:../lib:../auto_lib -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006

Opsi -L digunakan untuk menampilkan daftar utas untuk suatu proses yang memiliki perintah yang diberikan. Dan itu juga menampilkan nlwp, yang mewakili jumlah proses ringan. Dalam contoh di atas, total 15 utas java sedang berjalan.

7. Menemukan Kebocoran memori (ps –sort pmem)

Kebocoran memori, secara teknis, adalah penggunaan memori yang terus meningkat oleh aplikasi.

Pada aplikasi desktop umum, ini mungkin tidak diperhatikan, karena suatu proses biasanya membebaskan memori apa pun yang telah digunakannya saat Anda menutup aplikasi.

Namun, dalam model klien/server, kebocoran memori merupakan masalah serius, karena aplikasi diharapkan tersedia 24x7. Aplikasi tidak boleh terus meningkatkan penggunaan memorinya tanpa batas waktu, karena ini dapat menyebabkan masalah serius. Untuk memantau kebocoran memori tersebut, kita dapat menggunakan perintah berikut.

$ ps aux --sort pmem

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  1520  508 ?        S     2005   1:27 init
inst  1309  0.0  0.4 344308 33048 ?      S     2005   1:55 agnt (idle)
inst  2919  0.0  0.4 345580 37368 ?      S     2005  20:02 agnt (idle)
inst 24594  0.0  0.4 345068 36960 ?      S     2005  15:45 agnt (idle)
root 27645  0.0 14.4 1231288 1183976 ?   S     2005   3:01 /TaskServer/bin/./wrapper-linux-x86-32

Pada perintah ps di atas, opsi –sort menampilkan %MEM tertinggi di bagian bawah. Catat saja PID untuk penggunaan %MEM tertinggi. Kemudian gunakan perintah ps untuk melihat semua detail tentang id proses ini, dan pantau perubahannya dari waktu ke waktu. Anda harus mengulang ir secara manual atau menempatkannya sebagai cron ke file.

$ ps ev --pid=27645
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
27645 ? S 3:01 0 25 1231262 1183976 14.4 /TaskServer/bin/./wrapper-linux-x86-32

$ ps ev --pid=27645
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
27645 ? S 3:01 0 25 1231262 1183976 14.4 /TaskServer/bin/./wrapper-linux-x86-32

Catatan: Pada output di atas, jika RSS (ukuran set residen, dalam KB) meningkat seiring waktu (begitu juga %MEM), ini mungkin menunjukkan kebocoran memori dalam aplikasi.

Artikel sebelumnya dalam seri pemantauan dan penyetelan kinerja Linux:

  • 10 Contoh Sar (Sysstat) yang Berguna untuk Pemantauan Kinerja UNIX / Linux
  • Pengantar Pemantauan Kinerja dan Penyetelan Linux
  • 15 Contoh Perintah Teratas Linux yang Praktis

Linux
  1. 8 Contoh Praktis Perintah Linux Xargs untuk Pemula

  2. Perintah cp di Linux:7 Contoh Praktis

  3. Perintah Shutdown Linux:5 Contoh Praktis

  1. 12 Contoh Perintah IP untuk Pengguna Linux

  2. 5 Contoh Praktis Perintah dd di Linux

  3. UNIX / Linux:10 Contoh Perintah Netstat

  1. Tutorial Perintah Linux teratas untuk Pemula (8 Contoh)

  2. 16 Contoh Praktis perintah LS Linux untuk Pemula

  3. 30 Contoh Perintah Teratas untuk Pemantauan di Linux