Shell Scripting Complete 11: trap, Signals, flock Locks आणि Background Jobs
Scripts थांबवल्या जातात: कोणी Ctrl+C दाबतं, server shutdown होतो, किंवा timeout मारतो. एकाच cron job च्या दोन copies एकदम सुरू होऊन त्याच files साठी भांडू शकतात. या chapter मधे signals (INT, TERM, HUP, KILL), EXIT आणि ERR वर cleanup साठी trap, kill आणि timeout, & ने background jobs, wait, jobs, fg, bg, nohup आणि disown, अनेक jobs safely parallel चालवणं, आणि फक्त एक copy चालेल याची खात्री करायला flock शिकाल. प्रत्येक topic रोजच्या उदाहरणाने सुरू होतो आणि मग अनेक industries ची उदाहरणं.
या chapter मध्ये तुम्ही काय शिकाल
- Common signals आणि numbers समजा
- EXIT, INT, TERM आणि ERR वर trap ने cleanup
- Background jobs चालवा आणि wait
- Logout नंतर jobs चालू ठेवा
- Parallel jobs limit करा
- flock ने फक्त एक copy
1. रोजचं उदाहरण: रात्री दुकान बंद करणं
हे का लागतं?
लक्ष्मी रोडच्या साडी दुकानात बंद करताना ठराविक routine असतो: cash मोजा, lights बंद करा, shutter लावा. मालकाला अचानक जावं लागलं तरी shutter लावतोच. चावी एकाच व्यक्तीकडे, म्हणून दोन लोक एकदम दुकान उघडत नाहीत. trap म्हणजे तो closing routine, signals म्हणजे बंद करण्याची कारणं, आणि flock म्हणजे ती एकच चावी.
हे काय आहे?
Closing routine = trap cleanup EXIT. अचानक जाणं = INT (Ctrl+C) किंवा TERM. Power cut = KILL, कोणताही routine पकडू शकत नाही. Parallel काम करणारे helpers = & ने background jobs. सगळे helpers संपेपर्यंत थांबणं = wait. एक चावी = flock.
कसं करायचं (step by step)
2. Signals आणि kill
हे का लागतं?
अडकलेला process थांबवणं, nginx ला reload सांगणं, किंवा job का मेला हे बघणं, सगळ्याला signals लागतात.
हे काय आहे?
Signal म्हणजे process ला छोटा message. INT (2) म्हणजे Ctrl+C. TERM (15) सभ्य stop आणि kill चा default. HUP (1) बहुदा config reload. KILL (9) लगेच थांबवतो आणि पकडता येत नाही. STOP आणि CONT pause आणि resume. kill -l list करतो. Signal N ने मारलेला process 128+N ने exit होतो, म्हणून 130 INT आणि 143 TERM.
| Signal | Number आणि वापर |
|---|---|
| HUP | 1, config reload |
| INT | 2, Ctrl+C |
| KILL | 9, force, trap नाही |
| TERM | 15, सभ्य stop |
| STOP/CONT | pause/resume |
कसं करायचं (step by step)
- Signals list.
kill -l | head -2
Output:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
9) SIGKILL 15) SIGTERM
याचा अर्थ: Names आणि numbers.
- सभ्य stop.
kill 4321; sleep 2; ps -p 4321 || echo gone
Output:
gone
याचा अर्थ: आधी TERM.
- nginx reload.
sudo kill -HUP $(cat /run/nginx.pid)
याचा अर्थ: Config reload, downtime नाही.
- नावाने.
pkill -f 'python report.py'
याचा अर्थ: पूर्ण command line match.
- Signal चा exit code.
sleep 100 & kill $!; wait $!; echo $?
Output:
143
याचा अर्थ: 128+15.
3. trap: EXIT, INT, TERM वर cleanup
हे का लागतं?
Script थांबल्यावर temp files, अर्धे downloads आणि lock files मागे राहू नयेत.
हे काय आहे?
trap 'commands' SIGNALS ते signals आल्यावर commands चालवतो. trap cleanup EXIT, KILL सोडून कोणत्याही कारणाने script संपली की चालतो, म्हणून cleanup साठी सगळ्यात चांगली एकच जागा. INT आणि TERM trap करून message print करा आणि 130 किंवा 143 ने exit. Single quotes वापरा म्हणजे trap चालताना variables वाचले जातात. trap - EXIT काढतो; trap -p current traps दाखवतो.
कसं करायचं (step by step)
- Exit वर cleanup.
tmp=$(mktemp -d); trap 'rm -rf "$tmp"' EXIT; echo work > "$tmp/a"; ls "$tmp"
Output:
a
याचा अर्थ: Script संपल्यावर folder गेला.
- Ctrl+C message.
trap 'echo "stopped by user" >&2; exit 130' INT; sleep 60
Output:
^Cstopped by user
याचा अर्थ: Clean stop.
- Function style.
cleanup(){ rm -f /tmp/report.$$; echo 'cleaned'; }; trap cleanup EXIT INT TERM
Output:
cleaned
याचा अर्थ: सगळ्या exits साठी एक जागा.
- Traps दाखवा.
trap -p
Output:
trap -- 'cleanup' EXIT
याचा अर्थ: काय set आहे ते.
4. trap ERR आणि fail होणारी line
हे का लागतं?
300 lines ची script रात्री 2 ला fail झाली तर log ने कोणती line आणि कोणता command ते सांगावं.
हे काय आहे?
trap '...' ERR कोणताही command fail झाला की चालतो (set -e सारखे नियम). आत $LINENO line, $BASH_COMMAND command आणि $? code. set -E जोडा म्हणजे functions आणि subshells ला ERR trap मिळतो.
कसं करायचं (step by step)
- Failure report.
set -Eeuo pipefail
trap 'echo "ERR line $LINENO: $BASH_COMMAND (rc=$?)" >&2' ERR
cp /nope /tmp/
Output:
cp: cannot stat '/nope': No such file or directory
ERR line 3: cp /nope /tmp/ (rc=1)
याचा अर्थ: नेमकी जागा.
- Error वर alert.
trap 'curl -fsS -d "backup failed line $LINENO" "$HOOK"' ERR
याचा अर्थ: Line सह chat alert.
5. Background jobs: &, jobs, fg, bg, wait
हे का लागतं?
पाच servers वर एकेक copy करायला एकत्र करण्यापेक्षा पाचपट वेळ लागतो.
हे काय आहे?
cmd & cmd background मधे सुरू करतो आणि लगेच परत येतो. $! त्याचा PID. jobs या shell चे jobs list करतो, fg %1 एकाला समोर आणतो, Ctrl+Z समोरचा job pause करतो आणि bg तो background मधे resume करतो. wait सगळ्यांसाठी थांबतो; wait $pid एकासाठी थांबून त्याचा exit code देतो, म्हणून कोणी fail झालं का कळायला codes गोळा करा. wait -n पुढचा संपेपर्यंत थांबतो.
कसं करायचं (step by step)
- सुरू करा आणि बघा.
sleep 30 & jobs
Output:
[1]+ Running sleep 30 &
याचा अर्थ: Job 1.
- PID.
sleep 30 & echo "pid $!"
Output:
pid 5120
याचा अर्थ: kill किंवा wait सह.
- Parallel copy.
for h in web1 web2 web3; do scp -q app.tgz "$h:/tmp/" & done; wait; echo 'all copied'
Output:
all copied
याचा अर्थ: तीन एकदम.
- प्रत्येक result.
pids=(); for h in web1 web2; do ssh "$h" uptime & pids+=($!); done; fail=0; for p in "${pids[@]}"; do wait "$p" || fail=1; done; echo fail=$fail
Output:
10:01 up 9 days
10:01 up 3 days
fail=0
याचा अर्थ: कोणी fail झालं का कळतं.
- Pause आणि resume.
tar czf big.tgz /data # press Ctrl+Z
bg; jobs
Output:
[1]+ Running tar czf big.tgz /data &
याचा अर्थ: Background मधे गेलं.
6. Logout नंतर टिकणं: nohup, disown, setsid
हे का लागतं?
SSH वरून सुरू केलेलं long data migration Wi-Fi गेल्यावर मरतं, protect केलं नाही तर.
हे काय आहे?
Terminal बंद झाल्यावर jobs ना HUP मिळतो आणि बहुदा थांबतात. nohup cmd & HUP ignore करतो आणि output nohup.out मधे. disown चालू job shell पासून वेगळा करतो म्हणून HUP जात नाही. setsid नव्या session मधे सुरू करतो. खऱ्या long-running कामासाठी reattach करता येणारं tmux किंवा screen, किंवा services साठी systemd unit.
कसं करायचं (step by step)
- nohup.
nohup ./migrate.sh > migrate.log 2>&1 &
Output:
[1] 6012
याचा अर्थ: Logout पासून safe.
- nohup विसरलात.
./long.sh & disown; exit
याचा अर्थ: Exit नंतरही चालतं.
- tmux मार्ग.
tmux new -s mig './migrate.sh'
याचा अर्थ: Ctrl+B D ने detach, tmux a -t mig ने attach.
7. Parallel jobs limit
हे का लागतं?
500 downloads एकदम सुरू केले तर machine crash होऊ शकतं किंवा server block करू शकतो.
हे काय आहे?
जास्तीत जास्त N jobs चालू ठेवा: नवा सुरू करण्याआधी jobs -rp ने N किंवा जास्त दिसले तर एक संपेपर्यंत wait -n. xargs -P N दुसरा सोपा मार्ग: list मधून एकावेळी N चालवतो. Install असेल तर GNU parallel जास्त powerful.
कसं करायचं (step by step)
- wait -n सह max 4.
while read -r u; do (( $(jobs -rp | wc -l) >= 4 )) && wait -n; curl -fsSO "$u" & done < urls.txt; wait
याचा अर्थ: कधीच 4 पेक्षा जास्त नाही.
- xargs -P.
xargs -P 4 -n 1 curl -fsSO < urls.txt
याचा अर्थ: एकावेळी 4.
- Parallel logs compress.
find /var/log/app -name '*.log' -mtime +1 -print0 | xargs -0 -P 3 -n 1 gzip
याचा अर्थ: 3 gzip एकदम.
8. फक्त एक copy: flock
हे का लागतं?
Cron job दर 5 मिनिटांनी चालतो पण कधी 7 मिनिटं घेतो, तर दोन copies overlap होऊन data खराब होतो.
हे काय आहे?
flock file वर lock घेतो. flock -n /tmp/x.lock cmd, दुसऱ्या कोणाकडे lock नसेल तरच cmd चालवतो, नाहीतर लगेच exit 1. -n शिवाय तो थांबतो; -w 30, 30 seconds पर्यंत थांबतो. Script मधे exec 9>/tmp/x.lock; flock -n 9 || exit 1 वापरा, आणि script संपली की lock सुटतो, crash झाली तरी. pid file आहे का तपासण्यापेक्षा हे खूप safe.
| प्रकार | वागणं |
|---|---|
| flock -n f cmd | locked असेल तर skip |
| flock f cmd | lock साठी थांब |
| flock -w 30 f cmd | max 30 s थांब |
| exec 9>f; flock -n 9 | पूर्ण script lock |
कसं करायचं (step by step)
- Cron मधे.
*/5 * * * * flock -n /tmp/sync.lock /opt/bin/sync.sh
याचा अर्थ: Overlaps skip.
- दुसरी copy.
flock -n /tmp/sync.lock sleep 60 & sleep 1; flock -n /tmp/sync.lock echo hi; echo rc=$?
Output:
rc=1
याचा अर्थ: Lock पहिल्याकडे.
- Script header.
exec 9>/var/lock/backup.lock
flock -n 9 || { echo 'backup already running' >&2; exit 1; }
Output:
backup already running
याचा अर्थ: Exit वर आपोआप सुटतो.
- Limit सह wait.
flock -w 30 /tmp/deploy.lock ./deploy.sh || echo 'gave up after 30s'
Output:
gave up after 30s
याचा अर्थ: थोडा वेळ queue.
9. अनेक industries मधली खरी उदाहरणं
हे का लागतं?
तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.
हे काय आहे?
प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.
कसं करायचं (step by step)
| Team आणि शहर | ते कसं वापरतात | Command |
|---|---|---|
| Kiran, stock broking, Mumbai | दर मिनिटाला single-copy price import | flock -n /tmp/px.lock ./import.sh |
| Sarah, research lab, Boston | Ctrl+C वर scratch dirs clean | trap 'rm -rf "$tmp"' EXIT |
| Arjun, travel, Goa | 50 hotels चे APIs parallel ping | xargs -P 10 -n 1 curl -fs |
| Chen, gaming, Shenzhen | Game server config reload | kill -HUP "$pid" |
| Maria, logistics, Madrid | Logout टिकणारं migration | nohup ./migrate.sh & |
| Tejas, dairy co-op, Kolhapur | Failure वर line number | trap 'echo line $LINENO' ERR |
10. नेहमीच्या errors आणि त्यांचे fixes
हे का लागतं?
हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.
हे काय आहे?
आधी नेमका message वाचा. मग खालच्या row शी जुळवा.
कसं करायचं (step by step)
| दिसणारा error | का होतं | Fix कसा करायचा |
|---|---|---|
Temp files left after Ctrl+C | trap नाही | trap cleanup EXIT जोडा.trap 'rm -rf "$tmp"' EXIT |
Process ignores kill | TERM पकडतो किंवा D state मधे अडकला | थांबा, शेवटी -9.kill -9 PID |
Job died after SSH dropped | Logout वर HUP | nohup किंवा tmux.nohup ./job.sh & |
Two cron runs corrupt data | Overlap | flock -n वापरा.flock -n /tmp/j.lock ./j.sh |
wait: pid is not a child of this shell | दुसऱ्या shell मधे job | फक्त तुमच्या jobs वर wait.wait $! |
Script reports success though a background job failed | साधा wait 0 देतो | प्रत्येक pid wait करून check.wait "$p" || fail=1 |
flock: command not found | util-linux नाही | util-linux install.sudo dnf install -y util-linux |
Trap shows old value | Double quotes लवकर expand | Single quotes.trap 'echo $x' EXIT |
Machine slow after loop | खूप parallel jobs | wait -n किंवा xargs -P ने limit.xargs -P 4 |
11. Troubleshooting step by step
हे का लागतं?
Jobs गायब, अडकले किंवा overlap होत असतील तर processes, signals आणि locks बघा.
हे काय आहे?
वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.
कसं करायचं (step by step)
- Jobs list.
jobs -l
- Process शोधा.
pgrep -af sync.sh
- Process tree.
ps -ef --forest | grep -A3 sync
- Lock कोणाकडे?
sudo lsof /tmp/sync.lock
- Traps.
trap -p
- Exit code.
wait $!; echo $?
12. Lab 1: trap cleanup आणि Ctrl+C handling
हे का लागतं?
Temp folder बनवून slow काम करणारी आणि normally संपली किंवा Ctrl+C दाबलं तरी folder नेहमी काढणारी script लिहा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Script.
cat > ~/slow.sh <<'X'
#!/usr/bin/env bash
set -euo pipefail
tmp=$(mktemp -d)
cleanup(){ rm -rf "$tmp"; echo "cleaned $tmp"; }
trap cleanup EXIT
trap 'echo "stopped by user" >&2; exit 130' INT TERM
for i in 1 2 3 4 5; do echo "step $i" > "$tmp/s$i"; sleep 2; done
echo done
X
chmod +x ~/slow.sh
- Normal run.
~/slow.sh
Output:
done
cleaned /tmp/tmp.Ab12Cd
- Ctrl+C दाबा.
~/slow.sh # Ctrl+C after 3 s; echo rc=$?
Output:
^Cstopped by user
cleaned /tmp/tmp.Xy34Zq
rc=130
- दुसऱ्या terminal मधून.
~/slow.sh & sleep 3; kill $!; wait $!; echo rc=$?
Output:
stopped by user
cleaned /tmp/tmp.Pq56Rs
rc=130
- Temp नाही.
ls -d /tmp/tmp.* 2>/dev/null | wc -l
Output:
0
13. Lab 2: flock guard सह parallel jobs
हे का लागतं?
6 fake jobs चालवा, एकावेळी max 3, पूर्ण script flock ने protect करा, आणि दुसरी copy नाकारली जाते हे सिद्ध करा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Script.
cat > ~/par.sh <<'X'
#!/usr/bin/env bash
exec 9>/tmp/par.lock
flock -n 9 || { echo 'already running' >&2; exit 1; }
for i in 1 2 3 4 5 6; do
(( $(jobs -rp | wc -l) >= 3 )) && wait -n
( sleep 2; echo "job $i done" ) &
done
wait; echo all done
X
chmod +x ~/par.sh
- वेळ.
time ~/par.sh
Output:
job 1 done
job 2 done
job 3 done
job 4 done
job 5 done
job 6 done
all done
real 0m4.0s
- दोन copies.
~/par.sh & sleep 0.5; ~/par.sh; echo rc=$?; wait
Output:
already running
rc=1
- Clean.
rm ~/par.sh /tmp/par.lock
Ravindra Bagale's Tip
Put three lines at the top of every long or scheduled script: a flock guard, a mktemp temp folder, and trap cleanup EXIT. Then use kill (TERM) before kill -9, and wait on each background PID so a hidden failure never looks like success.
Ravindra Bagale's Tip – मराठी
प्रत्येक long किंवा scheduled script च्या वर तीन lines ठेवा: flock guard, mktemp temp folder आणि trap cleanup EXIT. मग kill -9 आधी kill (TERM) वापरा, आणि प्रत्येक background PID वर wait करा म्हणजे लपलेलं failure कधी success सारखं दिसणार नाही.
Ravindra Bagale's Tip – हिंदी
हर long या scheduled script के ऊपर तीन lines रखिए: flock guard, mktemp temp folder और trap cleanup EXIT. फिर kill -9 से पहले kill (TERM) इस्तेमाल कीजिए, और हर background PID पर wait कीजिए ताकि छिपा failure कभी success जैसा न दिखे.
14. नेहमी विचारले जाणारे प्रश्न
प्र. KILL trap करता येतो?
नाही, STOP पण नाही.
प्र. EXIT vs INT trap?
EXIT प्रत्येक शेवटी चालतो.
प्र. $! काय?
शेवटच्या background job चा PID.
प्र. Crash वर flock lock सुटतो?
हो, kernel सोडतो.
प्र. nohup vs tmux?
tmux reattach करू देतो.
प्र. exit 130 का?
INT साठी 128+2.
प्र. wait -n ला काय?
bash 4.3+.
प्र. NFS वर flock?
टाळा; local disk.
15. मुलाखत प्रश्न आणि उत्तरं
Beginner level
प्र. Ctrl+C काय पाठवतो?
INT.
प्र. Background मधे?
& जोडा.
प्र. Default kill signal?
TERM 15.
प्र. Jobs list?
jobs.
Mid level level
प्र. कोणत्याही exit वर cleanup?
trap cleanup EXIT.
प्र. Logout टिकणं?
nohup किंवा tmux.
प्र. Cron overlap थांबवा?
flock -n.
प्र. सगळ्या jobs साठी थांबा?
wait.
Senior level
प्र. pid files पेक्षा flock का?
Atomic आणि आपोआप सुटतो.
प्र. Fail झालेला background job?
प्रत्येक PID wait करून codes.
प्र. Fail line?
$LINENO आणि set -E सह trap ERR.
प्र. Graceful shutdown क्रम?
TERM, wait, मग KILL.
घरी करून बघा
- एकावेळी max 3 ने 10 images download करून किती fail झाले ते print करणारी script लिहा.
- तुमच्या एका जुन्या script ला trap जोडा म्हणजे temp files नेहमी काढल्या जातील.
सराव Tasks
Amravati Agro Market हा अमरावती मधला शेती व्यवसाय आहे. Anjali Thakre त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 21
सोपं Cleanup trap
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Anjali Thakre ने Amravati Agro Market मधे work मधे temp folder बनवला. Script संपल्यावर आपोआप काढा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Temp folder
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Safe temp folder बनवा आणि path work मधे ठेवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Signals list
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Signal number 15 चं नाव print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Polite stop
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Process 5150 ला SIGTERM ने politely थांबवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Jobs list
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: या shell च्या background jobs चे फक्त PIDs print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं सगळ्यांची वाट
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: फक्त PID 5150 च्या background job ची वाट पाहा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं स्वतःचा PID
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Current shell चा PID print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं नावाने PID
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: nginx नावाच्या processes चे PIDs शोधा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Foreground
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Job 2 foreground ला आणा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Pause
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Script 5 seconds थांबवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Ctrl+C पकडा
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Ctrl+C वर script stopped by user print करून exit 130.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Hangup ignore
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Current script SIGHUP ignore करेल असं करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Force kill
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: TERM ignore करणारा process 4321 force-kill करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम शेवटचा background PID
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: शेवटच्या background job चा PID print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Lock किंवा skip
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: /tmp/backup.lock lock खाली backup.sh चालवा, आधीच lock असेल तर लगेच skip.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Time limit
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: report.sh चालवा, 60 seconds पेक्षा जास्त चालला तर kill.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम नावाने reload
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: nginx नावाच्या processes ना नावाने SIGHUP पाठवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Trap काढा
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: INT वरचा trap काढा म्हणजे Ctrl+C पुन्हा normal.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड 30s पर्यंत थांबा
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: /tmp/sync.lock खाली sync.sh चालवा, lock साठी जास्तीत जास्त 30 seconds थांबा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Disown
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: Job 2 list मधे ठेवा पण logout वर shell त्याला SIGHUP पाठवणार नाही असं करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Parallel 4
का: BIZ jobs नी cleanup करायला हवा आणि एकाच वेळी दोनदा चालू नये.
काय करायचं: xargs ने या folder मधल्या .log files 4 एकावेळी gzip करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
16. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- TERM सभ्य, KILL force, INT म्हणजे Ctrl+C.
- नेहमी trap cleanup EXIT.
- $LINENO सह trap ERR.
- & आणि wait; प्रत्येक PID check.
- Long कामासाठी nohup, disown, tmux.
- एका copy साठी flock -n.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








अजून cards: Ravi Sir's Cards.