Q: You start a long-running process in an SSH session, but you need to disconnect without killing the process. What are your options?
When an SSH session disconnects, the shell sends SIGHUP (Hangup signal) to all child processes, which terminates them by default.
#Linux #Linux / SRE — Scenario-Based Interview Questions #L1 #SRE #Systems #Troubleshooting
🎙️ Candidate Opening & Architectural Context
""In an interview, I explain my systematic Linux troubleshooting methodology using Brendan Gregg's USE method. The interviewer is testing: Process management, SIGHUP, nohup, tmux/screen.. I structure my answer around systematic triage first, root cause analysis second, and permanent remediation third.""
Advertisement
🛠️ Production Runbook & Step-by-Step Resolution
1️⃣
Initial Diagnostics & Root Cause Analysis
When an SSH session disconnects, the shell sends SIGHUP (Hangup signal) to all child processes, which terminates them by default.
nohup: Run the command withnohup ./long_process.sh &. This explicitly ignores SIGHUP, and output is redirected tonohup.out.disown: If the process is already running, background it withCtrl+Zthenbg, then rundisown -h %1to remove it from the shell's job table so it won't receive SIGHUP.tmuxorscreen(Best Practice): Start a terminal multiplexer session (tmux new -s mysession), run the command inside it, then detach (Ctrl+B, D). Reconnect later withtmux attach -t mysession. The session persists independently of SSH.
2️⃣
Remediation & Permanent Safeguards
To prevent this: For production workflows, tmux/screen is vastly preferred because you can reattach and see the output interactively.
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: nohup: Run the command with nohup ./long_process.sh &. This explicitly ignores SIGHUP, and output is redirected to nohup.out.."
⚡ 60-Second Elevator Pitch Talking Points
- nohup: Run the command with nohup ./long_process.sh &. This explicitly ignores SIGHUP, and output...
- disown: If the process is already running, background it with Ctrl+Z then bg, then run disown -h ...
- tmux or screen (Best Practice): Start a terminal multiplexer session (tmux new -s mysession), run...
Advertisement