Mari Belajar Linux – Pengurusan Proses dengan Arahan ps, pgrep, kill, top dan htop (Bahagian 1)

 

Siri Mari Belajar Linux kali ini akan membincangkan tentang pengurusan proses dalam sistem pengoperasian Linux.

Arahan “ps”

Apabila sistem pengoperasian Linux mula dijalankan (boot), terdapat pelbagai proses akan dijalankan secara default.  Nak tau proses apa yang sedang berjalan? Login ke dalam sistem sebagai user biasa (saya gunakan akaun “nazri”) dan cuba jalankan arahan “ps” seperti berikut:

ps

Output arahan ini adalah seperti berikut:

 PID  TTY   TIME     CMD
11944 pts/0 00:00:00 bash
12027 pts/0 00:00:00 ps

Contoh ringkas di atas adalah output bagi arahan “ps” di mana proses yang sedang dijalankan oleh pengguna semasa adalah “bash” dan “ps“.  PID adalah proses ID, TTY – terminal yang digunakan, TIME – CPU time bagi proses yang dijalankan dan CMD – arahan yang dijalankan.

Arahan “ps” dengan option “aux” adalah yang paling biasa saya gunakan.  Option “aux” adalah bagi melihat keseluruhan proses yang sedang berjalan:

ps -aux

 

Output:

USER     PID   %CPU  %MEM VSZ   RSS   TTY   STAT  START   TIME   COMMAND
root     1     0.0   0.1 33328  2408  ?     Ss    Jun26   0:01   init
root     2     0.0   0.0 0      0     ?     S     Jun26   0:00   [kthreadd/25645]
root     3     0.0   0.0 0      0     ?     S     Jun26   0:00   [khelper/25645]
root     147   0.0   0.0 19428  708   ?     S     Jun26   0:00   upstart-udev-bridge --daemon
root     193   0.0   0.0 49216  1200  ?     Ss    Jun26   0:00   /lib/systemd/systemd-udevd --daemon
syslog   342   0.0   0.7 184580 16032 ?     Ssl   Jun26   0:08   rsyslogd
root     423   0.0   0.0 15608  976   ?     S     Jun26   0:00   upstart-socket-bridge --daemon
root     437   0.0   0.0 15492  788   ?     S     Jun26   0:00   upstart-file-bridge --daemon
root     454   0.0   0.0 14948  924   ?     Ss     Jun26  0:00   /usr/sbin/xinetd -dontfork -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root     460   0.0   0.0 23608  916   ?     Ss     Jun26  0:00   cron
root     488   0.0   0.1 61316  3052  ?     Ss     Jun26  0:07   /usr/sbin/sshd -D
nobody   518   0.0   0.1 28848  2580  ?     Ss     Jun26  0:07   /usr/sbin/openvpn --writepid /run/openvpn/server.pid --daemon ovpn-server --status /run/openvpn/server.
root     537   0.0   0.0 97452  808   ?     Sl     Jun26  0:00   /usr/sbin/pcscd
root     634   0.0   0.0 25296  1664  ?     Ss     Jun26  0:01   /usr/lib/postfix/master
postfix  643   0.0   0.0 27528  1768  ?     S      Jun26  0:00   qmgr -l -t unix -u
root     671   0.0   0.0 83552  1108  ?     Ss     Jun26  0:00   /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root     672   0.0   0.0 83552  788   ?     S      Jun26  0:00   /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root     717   0.0   0.1 71268  3112  ?     Ss     Jun26  0:09   /usr/sbin/apache2 -k start
postfix  910   0.0   0.1 40120  2728  ?     S      Jun26  0:00   tlsmgr -l -t unix -u -c
root     11933 0.0   0.1 90912  3988  ?     Rs     Jul01  0:00   sshd: root@pts/0
root     11944 0.0   0.0 18164  2060  pts/0 Ss     Jul01  0:00   -bash
root     12552 0.0   0.0 40808  1788  pts/0 S      Jul01  0:00   sudo -i
root     12553 0.0   0.0 18160  2088  pts/0 S      Jul01  0:00   -bash
postfix  13953 0.0   0.0 27360  1540  ?     S      00:59  0:00   pickup -l -t unix -u -c
root     17785 0.0   0.0 15520  1156  pts/0 R+     01:10  0:00   ps -aux
www-data 32098 0.0   0.1 415784 2948  ?     Sl     Jun30  0:26   /usr/sbin/apache2 -k start

Bagi melihat proses dan hubungan dengan proses lain, arahan “ps -aufx” boleh digunakan:

ps -aufx

Output:

ps-aufx

 

 

Dalam output di atas, kita boleh melihat proses-proses yang berkaitan.  Contohnya, pada proses ID (PID) 488, program sshd sedang berjalan di mana proses yang berkaitan termasuklah sesi SSH (PID 11933), bash shell (PID 11944), sudo (PID 12552), bash (PID 12553) dan arahan “ps” ini (PID 17899).

Parent proses in jika dimatikan, turut akan mematikan proses-proses di bawahnya.

Arahan “kill”

Arahan “kill” ini dengan mudah digunakan seperti berikut:

kill -9 <PID>

Contoh:

kill -9 12552

Option “-9” ini akan mematikan proses dan subproses di bawahnya.

Setelah kita “kill” lihat semula dengan arahan “ps -auxf“:

root 460   0.0 0.0 23608 916  ?     Ss Jun26 0:00 cron
root 488   0.0 0.1 61316 3052 ?     Ss Jun26 0:07 /usr/sbin/sshd -D
root 11933 0.0 0.1 90912 4020 ?     Ss Jul01 0:00  \_ sshd: root@pts/0
root 11944 0.0 0.0 18164 2060 pts/0 Ss Jul01 0:00      \_ -bash
root 17907 0.0 0.0 15516 1120 pts/0 R+ 01:49 0:00          \_ ps aufx

Perhatikan proses dengan PID 12552 dan PID 12553 telah dimatikan.

Bagi mematikan dan menghidupkan semula (restart) proses, arahan “ps -HUP <PID>” boleh digunakan.

Nota:

Arahan “kill” ini hanya boleh digunakan oleh tuan punya proses atau “root” sahaja.

Arahan “pgrep”

Arahan “pgrep” pula bertujuan untuk memaparkan PID sesuatu proses sahaja.  Contohnya:

pgrep apache2

Output:

717
32098

Kalau kita lihat contoh sebelum ini, output bagi ps -aufx bagi proses apache2:

root     717   0.0 0.1 71268  3112 ? Ss Jun26 0:09 /usr/sbin/apache2 -k start
www-data 32098 0.0 0.1 415784 2948 ? Sl Jun30 0:26 /usr/sbin/apache2 -k start

 

Arahan “top”

Arahan top pula digunakan untuk memaparkan proses yang sedang berjalan secara realtime.  Hanya jalankan arahan “top”:

 

 Arahan “htop”

Arahan ini pula tidak terdapat secara default dan perlu di pasang:

sudo apt-get install htop

Jalankan arahan “htop” melalui command line: