Masuk ke server Linux mana pun yang sedang menyala, dan meski kamu belum menjalankan apa-apa, sudah ada puluhan program yang sibuk bekerja. Ada yang menunggu koneksi jaringan, ada yang menulis log, ada yang menjaga jam tetap akurat. Tidak ada satu pun yang muncul di layar, karena server biasanya memang tidak punya layar. Lalu bagaimana kamu tahu apa yang sedang jalan, dan bagaimana cara mengendalikannya? Di situlah proses dan service masuk.
Dua kata ini sering dilempar ke sana-sini, dan keduanya berkaitan tapi tidak sama persis. Begitu kamu bisa membedakannya dan hafal segelintir perintah yang menyertainya, server Linux berhenti terasa seperti kotak hitam. Kamu bakal bisa melihat persis apa saja yang hidup di mesin itu, kenapa, dan apa yang harus dilakukan ketika ada yang berulah.
Proses itu sebenarnya apa
Proses adalah program yang sedang berjalan. Cuma itu definisinya. Setiap kali kamu menjalankan sesuatu di Linux — sebuah teks editor, web server, atau script satu baris — sistem operasi memuatnya ke memori, memberinya jatah waktu CPU, dan sejak saat itu dia jadi sebuah proses.
Kata kuncinya adalah berjalan. Sebuah program yang masih nongkrong di disk dalam bentuk berkas itu belum jadi proses; dia cuma kumpulan instruksi yang menunggu dipakai. Begitu kamu menjalankannya, kernel membuat sebuah proses di sekelilingnya: satu instance yang hidup, punya memorinya sendiri, kondisinya sendiri, dan identitasnya sendiri. Jalankan program yang sama tiga kali, kamu dapat tiga proses terpisah, padahal semuanya berasal dari satu berkas yang sama.
Setiap proses mendapat sebuah nomor bernama PID (Process ID). PID inilah cara sistem — dan kamu — merujuk ke satu program tertentu yang sedang jalan. Kalau kamu mau menghentikan program yang ngambek, kamu tidak menyebut namanya; kamu menunjuk PID-nya. Kernel membagikan PID berurutan seiring proses dimulai, dan memakainya ulang setelah sebuah proses berhenti.
BERKAS DI DISK PROSES (berjalan)
───────────── ─────────────────
/usr/bin/myapp jalan → PID 4821 myapp
(cuma byte) ├─ punya memori
├─ memakai waktu CPU
└─ punya kondisi (jalan/tidur)
Proses juga punya induk. Hampir setiap proses dimulai oleh proses lain, artinya mereka membentuk semacam pohon keluarga. Di puncak paling atas duduk proses pertama yang dijalankan kernel saat boot, biasanya dengan PID 1. Semua yang lain merupakan keturunannya. Saat kamu membuka shell lalu mengetik sebuah perintah, shell-mu adalah induknya dan perintah itu jadi anaknya.
Proses itu lebih dari sekadar 'program'
Program yang sama bisa berjalan sebagai banyak proses mandiri sekaligus, dan masing-masing terisolasi. Kalau satu crash, yang lain tetap jalan, karena kernel menyimpan mereka di kotak memori yang terpisah-pisah. Inilah alasan sebuah web server bisa melayani ribuan pengunjung tanpa satu permintaan rusak menjatuhkan seluruh mesin — di balik layar, pekerjaannya disebar ke beberapa proses (atau thread di dalamnya) yang tidak saling berbagi memori secara tidak sengaja.
Melihat apa yang sedang jalan
Kamu tidak bisa mengelola apa yang tidak bisa kamu lihat, jadi keterampilan pertama yang nyata adalah mendaftar proses. Ada dua perintah yang bakal terus-menerus kamu pakai.
Yang klasik adalah ps. Kalau dijalankan begitu saja, dia cuma menampilkan proses milik shell-mu sendiri, dan itu kurang berguna, jadi hampir selalu dijalankan dengan flag agar menampilkan semuanya:
ps aux
Perintah itu mencetak tabel berisi setiap proses di mesin. Kolom yang perlu kamu kenali:
USER PID %CPU %MEM ... STAT TIME COMMAND
root 1 0.0 0.1 ... Ss 0:04 /sbin/init
www 842 1.2 3.4 ... S 2:11 /usr/sbin/web-server
jane 1503 0.0 0.0 ... R 0:00 ps aux
- USER — pemilik proses (proses ini jalan sebagai user Linux yang mana).
- PID — nomor uniknya.
- %CPU / %MEM — seberapa besar prosesor dan memori yang dia pakai saat ini.
- STAT — kondisinya:
Rberjalan,Stidur (sedang menunggu sesuatu),Zzombie (sudah selesai tapi belum dibersihkan). - COMMAND — apa yang sebenarnya sedang berjalan.
ps memberimu potret sesaat — satu jepretan beku. Saat kamu ingin tampilan yang hidup dan terus diperbarui, kamu pakai top (atau sepupunya yang lebih ramah, htop, kalau memang terpasang):
top
top memenuhi layar dengan daftar yang menyegarkan diri terus-menerus, secara default diurutkan berdasarkan pemakaian CPU, jadi proses yang melahap prosesormu mengapung ke atas. Ini biasanya hal pertama yang dibuka orang ketika server terasa lambat — sekali lirik sudah cukup memberitahu apakah ada sesuatu yang menghabiskan CPU atau melahap seluruh memori.
Cari satu proses dengan cepat
Kalau kamu cuma peduli pada satu program tertentu, menyalurkan hasilnya ke grep menghemat banyak scroll: ps aux | grep web-server cuma menampilkan baris yang cocok. Kalau sistemmu punya pgrep, hasilnya bahkan lebih rapi — pgrep -a web-server mencetak PID dan baris perintah dari apa pun yang namanya cocok. Mengetahui PID biasanya jadi langkah pertama sebelum kamu menghentikan atau me-restart sesuatu.
Mengendalikan proses: sinyal
Anggap kamu sudah menemukan proses yang ingin kamu hentikan. Caranya? Kamu tidak masuk ke dalam lalu mematikan saklarnya — kamu mengirimkan sebuah sinyal kepadanya. Sinyal adalah pesan kecil yang dikirimkan kernel ke sebuah proses, memberitahu bahwa sesuatu terjadi atau memintanya melakukan sesuatu. Menghentikan proses sebenarnya cuma soal mengirim sinyal yang tepat.
Perintahnya bernama blak-blakan kill, walaupun sebagian besar waktu kamu sebenarnya meminta dengan sopan, bukan membantai paksa:
kill 4821 # minta proses 4821 berhenti dengan rapi
kill -9 4821 # paksa berhenti seketika (pilihan terakhir)
kill biasa mengirimkan sinyal TERM, yang artinya “tolong beresin lalu keluar.” Program yang berkelakuan baik menangkap ini, menyelesaikan apa yang sedang dikerjakan, menyimpan apa pun yang perlu, lalu keluar dengan bersih. Itulah yang hampir selalu kamu inginkan.
kill -9 mengirimkan KILL, yang tidak bisa ditangkap atau diabaikan oleh program — kernel cukup mencabutnya begitu saja. Dia berhenti seketika, tapi tidak diberi kesempatan membersihkan diri, jadi pakai ini hanya ketika sebuah proses benar-benar macet dan mengabaikan permintaan sopan tadi.
kill (TERM) → "tolong berhenti" → proses beberes, lalu keluar
kill -9 (KILL) → pencabutan paksa → proses hilang seketika
Ada sinyal lain juga — salah satu yang umum menyuruh program memuat ulang konfigurasinya tanpa benar-benar restart, yang berguna untuk service yang berjalan lama. Tapi untuk pekerjaan sehari-hari, kill yang sopan dan kill -9 yang memaksa sudah mencakup sebagian besar keadaan.
Dari proses jadi service
Sekarang giliran pergeseran yang penting. Proses yang kamu jalankan dengan mengetik perintah di shell-mu hidup dan mati bersama shell itu — tutup terminalnya, dan biasanya dia ikut hilang. Itu tidak masalah untuk script sekejap. Tapi tugas utama server justru menjaga segala sesuatu tetap berjalan: sebuah web server harus tetap hidup pukul 3 dini hari, entah ada yang login atau tidak.
Service (disebut juga daemon) adalah proses yang dirancang untuk berjalan terus-menerus di latar belakang, lepas dari ada-tidaknya user yang login. Dia menyala saat sistem boot, terus berjalan sendiri, dan dikelola oleh sistem, bukan oleh terminalmu. Web server yang menjawab permintaan, database yang menerima query, penjadwal yang menembakkan tugas terjadwal — semuanya berjalan sebagai service.
Petunjuk penamaannya ada di mana-mana di Linux: program yang dimaksudkan jalan sebagai service latar belakang sering berakhiran d, dari kata daemon. sshd adalah service SSH. crond menjalankan tugas terjadwal. Huruf d itu jadi tandamu bahwa program ini dibangun untuk diam tenang di latar belakang, bukan untuk dijalankan dengan tangan setiap kali.
PROSES BIASA SERVICE (daemon)
──────────── ────────────────
kamu jalankan lewat shell sistem menyalakannya saat boot
mati saat shell ditutup terus berjalan sendiri
kamu yang menungguinya bisa restart sendiri kalau crash
misal script yang kamu jalankan misal sshd, si web server
Jadi sebuah service itu adalah proses — tapi jenis yang spesial: berumur panjang, dikelola sistem, dan terlepas dari sesi user mana pun. Bedanya bukan pada programnya sendiri; bedanya pada bagaimana dia dijalankan dan siapa yang memegang kendalinya.
Mengelola service
Karena service perlu bertahan melewati reboot dan menyala dalam urutan yang benar, kamu tidak menjalankannya dengan tangan. Ada satu bagian khusus dari sistem operasi yang mengelolanya: dia menyalakannya saat boot, me-restart-nya kalau crash, dan memberimu perintah sederhana untuk mengendalikannya.
Di sebagian besar server Linux modern, pengelola itu adalah systemd, dan perintah yang kamu pakai untuk berbicara dengannya adalah systemctl. Kata kerja sehari-harinya persis seperti yang bakal kamu tebak:
systemctl status web-server # apakah jalan? tampilkan log terbaru
systemctl start web-server # nyalakan sekarang
systemctl stop web-server # matikan sekarang
systemctl restart web-server # matikan lalu nyalakan (menerapkan perubahan)
systemctl enable web-server # nyalakan otomatis setiap boot
systemctl disable web-server # jangan nyalakan saat boot
Dua di antaranya perlu kamu pisahkan baik-baik di kepala, karena pemula terus-menerus mencampuradukkannya. start memengaruhi service sekarang juga, detik ini, sampai reboot berikutnya. enable memengaruhi apakah dia menyala lagi setelah reboot. Sebuah service bisa saja sedang jalan sekarang tapi tidak di-enable (jadi dia tidak bertahan lewat restart), atau sudah di-enable tapi saat ini sedang mati. Biasanya kamu mau keduanya: enable agar bertahan lewat reboot, dan start agar langsung menyala tanpa menunggu reboot.
Perintah yang paling sering kamu jalankan adalah status. Dia memberitahumu dengan bahasa yang jelas apakah sebuah service aktif atau gagal, kapan terakhir dia menyala, dan beberapa baris terakhir dari log-nya — yang sering kali sudah cukup untuk mengendus apa yang salah:
● web-server.service - Example Web Server
Loaded: loaded (/etc/systemd/system/web-server.service; enabled)
Active: active (running) since Mon 2026-09-21 09:14:02 UTC
Main PID: 842 (web-server)
Active: active (running) adalah yang kamu harap lihat. failed artinya dia mencoba menyala tapi tidak bisa bertahan — dan baris-baris log di bawahnya biasanya langsung menunjuk ke penyebabnya.
Menghentikan service tidak sama dengan men-disable-nya
Kalau kamu stop sebuah service untuk menyelidiki sesuatu lalu me-reboot mesin, service yang enabled bakal menyala lagi dengan sendirinya — stop tadi tidak benar-benar menempel. Jebakan sebaliknya juga sama umumnya: orang disable sebuah service dengan harapan dia langsung mati, padahal disable cuma mencegahnya menyala pada boot berikutnya; dia masih jalan sekarang sampai kamu juga stop. Kalau kamu sungguh-sungguh ingin sebuah service mati sekarang dan setelah reboot, lakukan keduanya: stop dan disable.
Bagaimana semuanya menyatu
Mundur sejenak, dan gambaran besarnya ternyata cukup ringkas. Semua yang berjalan di server adalah sebuah proses — instance hidup dari sebuah program, diidentifikasi lewat PID. Kamu melihat proses dengan ps dan top, dan kamu mengendalikannya dengan mengirim sinyal lewat kill. Sebagian proses bersifat biasa dan terikat ke sesimu; sebagian lain adalah service, program latar belakang berumur panjang yang dinyalakan, diawasi, dan di-restart oleh sistem itu sendiri. Yang seperti itu kamu kelola lewat pengelola service — systemctl di mayoritas server hari ini — dengan kata kerja seperti start, stop, restart, enable, dan status.
Itu sudah sebagian besar dari apa yang dilakukan operasional server sehari-hari: tahu apa yang berjalan, kenapa berjalan, dan bagaimana membuatnya menyala, mati, atau berkelakuan benar. Begitu perintah-perintah ini sudah menempel di jari, sebuah mesin Linux terasa jauh lebih tidak misterius — kamu bisa mendekati server asing, mendaftar apa saja yang hidup di dalamnya, lalu menalarnya alih-alih menebak-nebak.
Kalau perintah-perintah di sini masih asing, ada baiknya kamu nyaman dulu dengan command line Linux, karena di situlah semua ini terjadi. Dan service yang paling sering kamu nyalakan dan matikan adalah yang dipasang lewat perkakas paket distribusimu, yang berbeda sedikit antar distribusi Linux — patut dilihat kalau kamu belum yakin server-mu termasuk keluarga yang mana.
Penutup
Versi singkatnya, semua dalam satu tempat:
- Proses adalah program yang sedang berjalan — sebuah instance hidup dengan memori, kondisi, dan PID uniknya sendiri. Program yang sama bisa berjalan sebagai banyak proses terpisah sekaligus.
- Lihat apa yang sedang jalan dengan
ps auxuntuk potret sesaat atautopuntuk tampilan hidup yang terus diperbarui; pakaigrepataupgrepuntuk menemukan satu proses dengan cepat. - Kendalikan sebuah proses dengan mengirim sinyal lewat
kill:killbiasa memintanya keluar dengan rapi,kill -9memaksanya berhenti sebagai pilihan terakhir. - Service (atau daemon) adalah proses yang dibangun untuk berjalan terus-menerus di latar belakang, dinyalakan sistem saat boot dan lepas dari user yang login — nama berakhiran
d(sshd,crond) adalah penandanya. - Kelola service dengan
systemctl:status,start,stop,restart, ditambahenable/disableuntuk mengatur apakah dia menyala lagi setelah reboot.startitu sekarang;enableitu untuk boot berikutnya — keduanya tidak sama.
Langkah lanjutan yang wajar adalah melihat lebih dekat si pengelola itu sendiri — systemd sebenarnya apa, bagaimana dia memutuskan apa yang menyala dan dalam urutan apa, serta bagaimana kamu mendefinisikan service-mu sendiri supaya sebuah program buatanmu menyala saat boot dan tetap hidup.