Q: You need to run a long-lived background service that must automatically restart if it crashes. You also want to manage its lifecycle (start/stop/restart) from a single systemd unit file. How do you configure systemd for auto-restart, and what are the critical directives?
Modern Linux systems use systemd to manage services instead of SysVinit scripts. A systemd unit file (e.g., /etc/systemd/system/myapp.ser...
#Linux #Linux / SRE — Scenario-Based Interview Questions #L2 #SRE #Systems #Troubleshooting
🎙️ Candidate Opening & Architectural Context
""During an on-call shift, our alerts triggered when a critical Linux production server exhibited this behavior. The interviewer is testing: Systemd service definition, restart policies, type directives.. 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
Modern Linux systems use systemd to manage services instead of SysVinit scripts. A systemd unit file (e.g., /etc/systemd/system/myapp.service) must configure restart behavior explicitly.
- Type=simple (default): The process runs in the foreground. Systemd considers the service active when the process starts.
- Type=forking: The process daemonizes itself (old SysVinit behavior). Systemd waits for the parent to exit before considering it active.
- Restart=on-failure: Automatically restart if the process exits with a non-zero exit code.
2️⃣
Remediation & Permanent Safeguards
Key directives: Example configuration: Then enable and start: systemctl daemon-reload && systemctl enable myapp && systemctl start myapp.
[Unit]
Description=My Critical Application
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myapp
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
- RestartSec=5: Wait 5 seconds between restart attempts to avoid restart loops.
- StandardOutput=journal and StandardError=journal: Capture all logs directly to journald (no separate log files needed).
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Type=simple (default): The process runs in the foreground. Systemd considers the service active when the process starts.."
⚡ 60-Second Elevator Pitch Talking Points
- Type=simple (default): The process runs in the foreground. Systemd considers the service active w...
- Type=forking: The process daemonizes itself (old SysVinit behavior). Systemd waits for the parent...
- Restart=on-failure: Automatically restart if the process exits with a non-zero exit code.
Advertisement