Killing Processes
Linux-এ process “kill” করা মানে সেটাকে forcefully মুছে দেওয়া না। প্রথমে process-কে বিনয়ের সাথে বন্ধ হতে বলা হয় — কাজ না করলে তারপর force করা হয়। এই পুরো ব্যবস্থাটার নাম Signal।
Signal কী
Signal হলো process-এর সাথে যোগাযোগের ভাষা।
তুমি process-কে সরাসরি কথা বলতে পারো না। Linux-এর মাধ্যমে signal পাঠাও — process সেই signal দেখে কী করবে সিদ্ধান্ত নেয়।
সবচেয়ে গুরুত্বপূর্ণ signals:
| Signal | Number | কাজ | Process কি ignore করতে পারে? |
|---|---|---|---|
SIGTERM | 15 | ”অনুগ্রহ করে বন্ধ হও” | হ্যাঁ |
SIGKILL | 9 | ”এখনই বন্ধ করো” | না — কখনোই না |
SIGHUP | 1 | ”config reload করো” | হ্যাঁ |
SIGSTOP | 19 | ”থামো” | না |
SIGCONT | 18 | ”চালু হও” | না |
SIGINT | 2 | ”interrupt করো” (Ctrl+C) | হ্যাঁ |
SIGTERM vs SIGKILL — পার্থক্যটা জরুরি:
SIGTERM পাঠালে Linux process-কে বলে “বন্ধ হও”। Process চাইলে এই signal ধরতে পারে, নিজের কাজ গুছিয়ে (files save করা, connections বন্ধ করা) তারপর exit করতে পারে। চাইলে ignore-ও করতে পারে।
SIGKILL একদম আলাদা — এটা process-এর কাছে যায়ই না। Kernel সরাসরি সেই process-কে memory থেকে মুছে দেয়। Process জানতেও পারে না কী হলো।
SIGTERM: তুমি → Linux → process (process জানে, respond করতে পারে)
SIGKILL: তুমি → Linux → Kernel সরাসরি process মুছে দেয়সবসময় আগে SIGTERM চেষ্টা করো। Database বা web server-এ SIGKILL দিলে চলমান অপারেশন মাঝপথে কেটে যেতে পারে — data corrupt হতে পারে। SIGTERM দিলে সে নিজে data save করে তারপর বন্ধ হয়।
kill
PID দিয়ে process-কে signal পাঠাও।
# আগে PID খোঁজো
ps aux | grep nginx
# omar 5678 0.1 0.2 nginx
# Graceful kill — SIGTERM (default)
kill 5678
# কাজ না করলে — force kill (SIGKILL)
kill -9 5678
# অথবা
kill -KILL 5678
# Config reload — SIGHUP (service restart না করে)
kill -1 5678
kill -HUP 5678Workflow: process বন্ধ করো
# Step 1: PID খোঁজো
ps aux | grep python3
# omar 1234 python3 app.py
# Step 2: Gracefully বন্ধ করার চেষ্টা
kill 1234
# Step 3: এখনো চলছে কিনা দেখো
ps aux | grep python3
# Step 4: এখনো চলছে? Force kill
kill -9 1234pkill
PID মনে না রেখে নাম দিয়ে kill করো।
# নাম দিয়ে kill (SIGTERM)
pkill nginx
pkill python3
# Force kill
pkill -9 firefox
# নির্দিষ্ট user-এর process kill করো
pkill -u omar python3
# Exact name match (partial না)
# "nginx" match করবে কিন্তু "nginx-worker" করবে না
pkill -x nginxpkill একসাথে সব matching process kill করে। যেমন pkill python3 দিলে সব python3 process বন্ধ হবে — শুধু একটা নয়। সাবধানে ব্যবহার করো।
killall
একই নামের সব process একসাথে বন্ধ করো।
# সব nginx process বন্ধ করো
killall nginx
# Force
killall -9 chromepkill এবং killall প্রায় একই কাজ করে — pkill regex সাপোর্ট করে এবং বেশি flexible।
Keyboard Shortcuts
Terminal-এ চলমান foreground process দ্রুত control করো:
| Shortcut | Signal | কাজ |
|---|---|---|
Ctrl+C | SIGINT (2) | Process cancel করো — সবচেয়ে বেশি ব্যবহার |
Ctrl+Z | SIGTSTP (20) | Process pause করো — পরে fg বা bg দিয়ে চালু করো |
Ctrl+\ | SIGQUIT (3) | Process বন্ধ + core dump তৈরি করো |
Ctrl+C vs Ctrl+Z পার্থক্য:
Ctrl+C → process বন্ধ হয়ে যায়, আর নেই
Ctrl+Z → process pause হয়, background-এ আটকে থাকে
তারপর: fg দিয়ে ফেরত আনো, বা bg দিয়ে background-এ চালাওtop থেকে Kill
# top চালাও
top
# k চাপো
# "PID to signal/kill:" → PID দাও
# "Signal number [15]:" → Enter (SIGTERM) বা 9 (SIGKILL)Practice
# 1. Background-এ একটা test process চালাও
sleep 500 &
# [1] 8888
# 2. PID দেখো
jobs # job number দেখায়
pgrep sleep # শুধু PID দেখায়
# 3. Gracefully kill করো
kill 8888
# 4. আর নেই confirm করো
ps aux | grep sleepCyberSec Note
Process kill — attack এবং defense:
Anti-forensics — attacker যা করে:
# Security monitoring daemon বন্ধ করো
# auditd = Linux-এর security audit logging service
pkill -9 auditd # log লেখা বন্ধ হয়ে যাবে
# ossec = intrusion detection system
pkill -9 ossecএই কাজ করলে attacker-এর কার্যকলাপ log-এ থাকে না।
Incident Response — defender যা করে:
# Suspicious process pattern খোঁজো
ps aux | grep -E "nc |ncat|netcat|bash -i"
# Reverse shell বন্ধ করো
pkill -9 nc
# একটি নির্দিষ্ট command pattern kill করো
kill -9 $(pgrep -f "bash -i")
# ^-- pgrep -f = full command line match করেConfig reload — restart না করে:
# nginx config পরিবর্তন করার পর
# restart = downtime, SIGHUP = no downtime
kill -HUP $(pgrep nginx)
# অথবা systemctl দিয়ে
sudo systemctl reload nginxCTF-এ stuck shell বা listener বন্ধ করতে kill -9 সবচেয়ে বেশি লাগে।
Quick Check
- SIGTERM আর SIGKILL এর mechanical পার্থক্য কী? কোনটা process ignore করতে পারে?
-
kill 1234আরkill -9 1234— কোনটা কখন ব্যবহার করবে? -
pkill nginxআরkill $(pgrep nginx)— একই কাজ? - Ctrl+C আর Ctrl+Z কীভাবে আলাদা?
-
kill -HUPকেন service restart না করে config reload করার জন্য ব্যবহার হয়?
পরবর্তী → Managing Services