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:
sleep 30 &
pid=$!
ps --no-headers -o comm= -p $pid
kill $pid
wait 2>/dev/null
echo "proses latar dihentikan"Output yang Dihasilkan:
sleep
proses latar dihentikanMari kita bedah baris-barisnya:
- Baris 1 (
sleep 30 &): menjalankansleepdi background sehingga menjadi proses hidup yang bisa kita amati. - Baris 2 (
pid=$!): menyimpan PID proses background terakhir ke variabel — nilainya berbeda tiap eksekusi, jadi ditampung, bukan dicetak. - Baris 3 (
ps --no-headers -o comm= -p $pid): menampilkan proses bernomor$pidsaja (-p), tanpa baris judul (--no-headers), dan hanya kolomcomm— tanda=di belakang nama kolom membuang judulnya. - 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:
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 auxKolomnya 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:
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:
tugas-latar.sh
tugas selesaiNama 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:
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:
sleep
sleep
tugas-latar.sh
ketiga proses dihentikanOpsi -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:
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 bashBaris 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 .