Catatan Belajar Hari Kedua Memahami Process Linux dan Signal Handling
Setelah memahami permission dan log processing di hari pertama, saya mulai masuk ke konsep yang jauh lebih penting dalam sistem Linux: process management.
Hari ini saya belajar bagaimana sebuah service berjalan, bagaimana Linux mengelola process, dan bagaimana signal bekerja saat kita menghentikan program.
1️⃣ Apa Itu Process?
Setiap command yang dijalankan di Linux adalah sebuah process.
Contoh sederhana:
sleep 300
Saat command ini berjalan, Linux membuat sebuah process dengan PID (Process ID) unik.
Untuk melihatnya:
ps aux | grep sleep
Dari sini saya memahami bahwa:
Setiap aplikasi adalah process dan Setiap process punya PID
Linux mengelola semuanya melalui process tree
2️⃣ Background Process & Job Control
Menjalankan command di background:
sleep 300 &
jobs
Ternyata jobs hanya menampilkan process yang dijalankan di session shell yang sama.Jika membuka terminal baru, jobs tidak akan menampilkan apa pun.
Ini membuat saya memahami bahwa job control bersifat lokal terhadap shell session.
3️⃣ Parent & Child Process
Saya membuat simulasi service sederhana:
#!/bin/bash
while true
do
echo "Service running at $(date)"
sleep 2
done
Ketika dijalankan:
./fake-service.sh &
Saya menemukan sesuatu yang menarik:
Script memiliki satu PID
sleep memiliki PID berbeda
PID sleep akan terus berubah
Kenapa?
Karena:
Script adalah parent process
Setiap sleep adalah child process
Saat sleep selesai, loop membuat child baru dan penting untuk diketahui jika :
Killing child process tidak menghentikan service
Killing parent process menghentikan semuanya
4️⃣ Killing Process: kill vs pkill
Untuk menghentikan process berdasarkan PID:
kill <PID>
Untuk menghentikan berdasarkan nama:
pkill sleep
Perbedaannya:
kill → target spesifik PID
pkill → target berdasarkan nama process
5️⃣ Signal Handling: SIGTERM vs SIGKILL
Default:
kill PID
Sebenarnya mengirim:
SIGTERM (15)
Force kill:
kill -9 PID
Mengirim:
SIGKILL (9)
Perbedaan penting:
| Signal | Graceful | Bisa Ditangkap |
|---|---|---|
| SIGTERM | Ya | Ya |
| SIGKILL | Tidak | Tidak |
Untuk memahami graceful shutdown, saya menambahkan trap:
trap "echo 'Service stopping...'; exit 0" SIGTERM
Saat dikill dengan SIGTERM, service bisa membersihkan dirinya sebelum berhenti.
Konsep ini sangat penting dalam container dan production system.
💡 Insight Penting Hari Ini
Docker container pada dasarnya adalah Linux process yang diisolasi.
Jika main process mati, container mati.
Jika signal tidak ditangani dengan benar, shutdown bisa tidak graceful.
Memahami process dan signal membuat saya melihat Docker bukan sebagai “magic”, tetapi sebagai abstraction di atas Linux process.
Sampai jumpa di Infra Journey hari ketiga!
Top comments (0)