While rebooting seems straightforward, doing it safely on a production server involves more care than just running a single command. This guide covers the right approach.
Before Rebooting: Check What Might Be Affected
systemctl list-units --type=service --state=running
Review active services to understand what will be interrupted — particularly important on a server running multiple applications where you might not remember everything currently active.
Check for Active User Sessions
who
If others might be actively working on the server, a heads-up before an unplanned reboot avoids disrupting their work unexpectedly.
Basic Reboot
sudo reboot
Basic Shutdown
sudo shutdown -h now
Scheduling a Reboot for a Specific Time
sudo shutdown -r 02:00
Schedules a reboot for 2:00 AM, giving advance notice to anyone logged in and allowing time to cancel if needed.
Canceling a Scheduled Shutdown/Reboot
sudo shutdown -c
Broadcasting a Warning Message Before Reboot
sudo shutdown -r +10 "Server rebooting in 10 minutes for maintenance"
Sends a message to all logged-in users' terminals, giving them advance notice.
Verifying Services Start Correctly After Reboot
After a reboot, always verify critical services actually came back up correctly:
systemctl status nginx
systemctl status your-application
docker ps
Don't assume everything restarted correctly just because the server itself is reachable — a service that fails to auto-start on boot causes a silent, ongoing outage that a simple ping/connectivity check won't reveal.
Ensuring Services Are Enabled to Start on Boot
sudo systemctl is-enabled nginx
sudo systemctl enable nginx
A service that's running but not "enabled" won't automatically restart after a reboot — verify this for every critical service before relying on automatic recovery.
Rebooting Safely When Using Docker
Ensure containers have --restart unless-stopped or similar policy configured (see How to Install Docker Engine on Ubuntu & Debian) so they automatically restart after a reboot without manual intervention.
Planning Maintenance Windows for Production Systems
For business-critical systems, schedule reboots during lower-traffic periods and communicate planned downtime in advance where relevant — see How to Build a Status Page for Your Service for external communication of planned maintenance.
When to Prefer a Graceful Service Restart Over a Full Reboot
A full server reboot is often unnecessary for many changes — restarting just the specific affected service (sudo systemctl restart nginx) is faster and less disruptive when a full system reboot genuinely isn't required (e.g. not needed for a kernel update).
Common Errors
Server doesn't come back online after reboot — if using a cloud/VPS console, check the boot console output for errors; a misconfigured fstab entry (see How to Mount and Format Additional Disks on a Linux VPS) is a common cause of boot failures.
Continue Reading
- How to Manage Services with systemd and systemctl
- How to Mount and Format Additional Disks on a Linux VPS
- How to Build a Status Page for Your Service
Browse more articles in Linux Server Administration.