Kosakata proses dari Chapter sebelumnya belum berguna bila kita tidak bisa mendaftarkan proses yang sedang hidup. Linux menyediakan dua alat utama untuk itu: ps yang memotret kondisi sesaat, dan top yang terus memperbarui tampilannya seperti layar monitor. Kita mulai dari snapshot ps, membedah kolom-kolomnya, lalu naik ke top dan htop untuk mengamati pemakaian CPU dan memori secara langsung.

Snapshot Proses dengan ps #

Dipakai tanpa argumen, ps menampilkan proses milik sesi terminal saat ini — pada shell interaktif biasanya cuma bash dan ps-nya sendiri. Karena buku ini menjalankan blok kode secara otomatis, kita memakai bentuk yang lebih terkendali: menjalankan satu proses background sendiri, lalu menanyakannya lewat PID-nya:

bash
sleep 30 &
pid=$!
ps --no-headers -o comm= -p $pid
kill $pid
wait 2>/dev/null
echo "proses latar dihentikan"

Output yang Dihasilkan:

text
sleep
proses latar dihentikan

Mari kita bedah baris-barisnya:

  1. Baris 1 (sleep 30 &): menjalankan sleep di background sehingga menjadi proses hidup yang bisa kita amati.
  2. Baris 2 (pid=$!): menyimpan PID proses background terakhir ke variabel — nilainya berbeda tiap eksekusi, jadi ditampung, bukan dicetak.
  3. Baris 3 (ps --no-headers -o comm= -p $pid): menampilkan proses bernomor $pid saja (-p), tanpa baris judul (--no-headers), dan hanya kolom comm — tanda = di belakang nama kolom membuang judulnya.
  4. Baris 4-5 (kill $pid; wait): menghentikan proses itu lalu menunggunya benar-benar pergi sebelum blok berakhir.

Potret Seluruh Sistem dengan ps aux #

Untuk melihat semua proses di sistem — bukan hanya milik sesi kita — bentuk klasiknya adalah ps aux, warisan gaya BSD. Karena isinya berisi nomor PID dan angka pemakaian yang berbeda di setiap mesin, berikut contoh tampilannya, bukan output terverifikasi:

text
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2564  1096 ?        Ss   05:43   0:00 /sbin/init
budi      2145  0.0  0.2   9800  2900 pts/0    Ss   09:12   0:00 -bash
budi      2387  0.0  0.0   4208   300 pts/0    S    09:15   0:00 sleep 300
budi      2388  0.0  0.0   5800   700 pts/0    R+   09:15   0:00 ps aux

Kolomnya wajib dibaca benar: USER pemilik proses, %CPU dan %MEM porsi CPU serta memori, VSZ total memori virtual dalam KB, RSS memori fisik yang benar-benar dipakai, TTY terminal (? berarti tanpa terminal, seperti service sistem), START waktu dilahirkan, dan TIME akumulasi waktu CPU. Kolom STAT adalah state yang kita kenal dari /proc: R sedang berjalan, S sedang tidur menunggu, D menunggu I/O, T dihentikan sementara, dan Z zombie; huruf kecil setelahnya penanda tambahan — s pemimpin sesi dan + proses foreground.

Padanan gaya Unix-nya adalah ps -ef atau ps -e; keduanya menampilkan semua proses, hanya beda gaya option. Jumlah proses itu sendiri berubah setiap saat — ps -e --no-headers | wc -l bisa menghasilkan angka berbeda dari detik ke detik, cukup dipakai sebagai ilustrasi kasar, bukan angka pasti.

Memilih Kolom dengan -o dan Menyaring dengan -C #

Opsi -o memungkinkan kita memilih kolom sendiri — pid, comm, stat, %cpu, %mem, lalu menyortirnya dengan --sort. Menyaring berdasarkan nama program dilakukan lewat -C. Skrip berikut membuat program sendiri bernama tugas-latar.sh lalu mencarinya:

bash
printf '#!/bin/bash\nsleep 30\n' > tugas-latar.sh
chmod +x tugas-latar.sh
./tugas-latar.sh > /dev/null 2>&1 & pid=$!
sleep 0.3
ps -C tugas-latar.sh -o comm=
kill $pid
wait 2>/dev/null
echo "tugas selesai"

Output yang Dihasilkan:

text
tugas-latar.sh
tugas selesai

Nama file skrip menjadi nama prosesnya — persis perilaku comm yang kita lihat di /proc; output skrip ini kita alihkan ke /dev/null karena memang tidak mencetak apa pun. Opsi --sort bekerja pada kumpulan PID sekaligus — perhatikan hasilnya yang tersusun alfabetis meskipun prosesnya dibuat acak:

bash
printf '#!/bin/bash\nsleep 30\n' > tugas-latar.sh
chmod +x tugas-latar.sh
./tugas-latar.sh > /dev/null 2>&1 & a=$!
sleep 30 & b=$!
sleep 30 & c=$!
sleep 0.3
ps --no-headers -o comm= -p $a,$b,$c --sort=comm
kill $a $b $c
wait 2>/dev/null
echo "ketiga proses dihentikan"

Output yang Dihasilkan:

text
sleep
sleep
tugas-latar.sh
ketiga proses dihentikan

Opsi -p menerima daftar PID dipisah koma, dan --sort=comm mengurutkan hasilnya berdasarkan nama perintah — dua sleep naik ke atas karena alphabetically mendahului tugas-latar.sh.

top: Layar Monitor yang Memperbarui Diriinya #

top menampilkan tabel yang sama seperti ps aux, tetapi diperbarui setiap beberapa detik sehingga terlihat proses mana yang sedang aktif. Program ini interaktif dan tidak bisa dibuktikan dalam blok output otomatis buku ini; berikut contoh tampilan layarnya:

text
top - 09:41:12 up  3:12,  1 user,  load average: 0.15, 0.10, 0.09
Tasks: 112 total,   2 running, 110 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  0.8 sy,  0.0 ni, 97.3 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  15872.0 total,  10234.5 free,   2101.2 used,   3536.3 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  11203.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   2388 budi      20   0    4208    300    256 R   0.3   0.0   0:00.01 sleep
   2145 budi      20   0    9800   2900   2300 S   0.0   0.0   0:00.02 bash

Baris pertama memuat load average: rata-rata beban sistem pada 1, 5, dan 15 menit terakhir — angka yang jauh melampaui jumlah core menandakan antrian kerja menumpuk. Baris Tasks merangkum jumlah proses per keadaan, %Cpu(s) memecah pemakaian CPU (us oleh program user, sy oleh kernel, id waktu nganggur), dan dua baris Mem/Swap menampilkan memori. Tombol yang perlu diingat: q keluar, P urutkan berdasarkan CPU, M berdasarkan memori, k kirim sinyal ke PID tertentu, dan 1 pecah tampilan per core. Daftar tombol lengkapnya ada di halaman manual top(1) .

htop: top yang Lebih Ramah #

htop adalah pengganti top dengan tampilan berwarna: setiap core CPU dan blok memori digambar sebagai meteran, daftar proses bisa digulir ke segala arah, dan seluruh operasi dipandu label tombol F1 sampai F10 di bagian bawah layar. Fitur yang paling sering dipakai: F6 memilih kolom sortir, F3 mencari nama proses, / menyaring tampilan, t mengubah tampilan menjadi pohon proses, dan F9 menghentikan proses — htop menawarkan daftar sinyal, dari SIGTERM sampai SIGKILL, sehingga kita tidak perlu menghafal nomornya.

Program ini tidak terpasang di lingkungan minimal tempat buku ini diuji; di Debian dan Ubuntu ia tersedia sebagai paket htop lewat apt install htop dengan hak admin. Panduan lengkap fiturnya terdokumentasi di halaman manual htop(1) , dan detail semua kolom ps ada di halaman manual ps(1) .

Kini kita bisa melihat siapa yang berjalan dan berapa besar ia makan. Pertanyaan berikutnya: bagaimana menjalankan perintah lama bekerja di belakang layar sementara terminal dipakai untuk yang lain? Jawabannya adalah background process — materi Chapter Foreground dan Background Processes .