Proses dan Service di Linux: Apa yang Sedang Jalan di Server-mu dan Kenapa

Setiap program di server Linux adalah sebuah proses, dan yang berjalan diam-diam di latar belakang disebut service. Pahami proses itu sebenarnya apa, cara melihat apa yang sedang jalan, beda proses dengan service, serta cara menyalakan, mematikan, dan memeriksanya — dijelaskan dari nol.

Diterbitkan 21 September 202610 menit bacaOleh ACY Partner Indonesia
Proses dan service Linux — program yang berjalan dan daemon latar belakang di server
300 × 250Slot Iklan TersediaPasang iklan Anda di sini

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: R berjalan, S tidur (sedang menunggu sesuatu), Z zombie (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 aux untuk potret sesaat atau top untuk tampilan hidup yang terus diperbarui; pakai grep atau pgrep untuk menemukan satu proses dengan cepat.
  • Kendalikan sebuah proses dengan mengirim sinyal lewat kill: kill biasa memintanya keluar dengan rapi, kill -9 memaksanya 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, ditambah enable/disable untuk mengatur apakah dia menyala lagi setelah reboot. start itu sekarang; enable itu 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.

Tag:linuxprosesserviceserverpemula
728 × 90Slot Iklan TersediaPasang iklan Anda di sini

Artikel Terkait

Lihat Semua Artikel

Artikel yang Mungkin Kamu Suka

SSL dan enkripsi at rest — data terlindungi saat berjalan dan saat tersimpan di disk
Server / Keamanan Server

SSL dan Enkripsi at Rest: Melindungi Data Saat Berjalan dan Saat Tersimpan

Enkripsi melindungi data di dua tempat: saat data lewat di jaringan (in transit) dan saat data nganggur di disk (at rest). Pahami bedanya, kenapa kamu butuh keduanya, bagaimana TLS, enkripsi disk, dan pengelolaan kunci sebenarnya saling melengkapi, plus kesalahan praktis yang sering bikin sia-sia.

9 Nov 202612 menit baca
Mengamankan port dan service — menutup pintu di server yang tidak kamu pakai
Server / Keamanan Server

Mengamankan Port dan Service: Menutup Pintu yang Tidak Kamu Pakai

Setiap port yang terbuka di server adalah satu pintu yang bisa dicoba orang lain. Pahami port dan service itu sebenarnya apa, kenapa service yang terekspos jadi risiko terbesarmu, dan kebiasaan sederhana menutup semua yang tidak kamu butuhkan — dijelaskan dari nol.

8 Nov 202610 menit baca
Prinsip least privilege — memberi hanya akses minimum yang dibutuhkan tiap user dan proses
Server / Keamanan Server

Prinsip Least Privilege: Beri Setiap Hal Hanya Akses yang Benar-Benar Dibutuhkan

Least privilege adalah aturan diam-diam di balik hampir semua setup keamanan yang solid: setiap user, proses, dan kunci hanya dapat akses minimum untuk menjalankan tugasnya, tidak lebih.

7 Nov 202612 menit baca
Fail2ban dan dasar intrusi — mengawasi log dan mem-banned otomatis pelaku yang menggedor berulang kali
Server / Keamanan Server

Fail2ban dan Dasar Intrusi: Mem-banned Otomatis Bot yang Terus Menggedor Server-mu

Penyerang tidak berhenti setelah sekali salah tebak — mereka terus menggedor, ribuan kali sehari. Pahami seperti apa sebenarnya percobaan intrusi, apa yang dikerjakan fail2ban, bagaimana ia mengawasi log dan mem-banned pelaku otomatis, dan cara menyetelnya dengan masuk akal tanpa mengunci dirimu.

6 Nov 202612 menit baca
Menjaga software tetap update — menutup lubang keamanan yang sudah diketahui sebelum penyerang memakainya
Server / Keamanan Server

Menjaga Software Tetap Update: Kebiasaan Membosankan yang Mencegah Sebagian Besar Pembobolan Server

Kebanyakan server tidak dibobol lewat serangan baru yang canggih — tapi lewat lubang lama yang sudah diketahui, yang sebenarnya cukup ditutup dengan update. Pelajari kenapa update itu penting, apa saja yang harus di-update, cara melakukannya dengan aman tanpa merusak apa pun, dan cara.

5 Nov 20269 menit baca
Konfigurasi firewall — aturan default-deny yang hanya membuka port yang kamu butuhkan
Server / Keamanan Server

Konfigurasi Firewall: Menyusun Aturan Default-Deny Tanpa Mengunci Diri Sendiri

Tahu apa itu firewall dan benar-benar mengonfigurasinya dengan rapi adalah dua keterampilan berbeda. Pelajari cara menyusun aturan default-deny, mengurutkan aturan dengan benar, membuka akses sendiri lebih dulu, menangani IPv6 dan security group cloud, lalu mengujinya sebelum dipakai — panduan.

4 Nov 202614 menit baca