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:
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: