As a Sysadmin, one of the frequent activities is to reboot or power off servers.
This could be due to regular maintenance activity like OS patching or due to some hardware failure that requires a system to be powered down for maintenance.
A Linux system offers several different ways to reboot or shut down the server. A normal system should respond to any command while a degraded server may need to be rebooted forcefully. Do note that most of these commands will require a certain level of privilege either as superuser or with sudo to be executed successfully since rebooting a system is an administrative task and for a multi-user system or server running critical processes, reboot or shutdown is a disruptive activity.
This article covers few such methods which can help you out with Linux reboot/shutdown activity.
If you’re using a GUI Desktop Environment for Linux like Gnome, KDE, Mate, XFCE, etc., you’ll find a power button in the system/application menu which offers actions such as logout, reboot, hibernate or power off. Available options may differ slightly depending upon which distribution, desktop environment, and version of OS is in use. But you’ll definitely find power-related settings in available menus to change the power state of your system.
For example, on my Ubuntu Mate desktop, I can find the Shut Down option in the power menu at the top right of my screen.
Once you select “Shut Down…” option, you’ll be presented with a dialog with multiple options like Suspend, Restart, Cancel and Shut Down. You can either proceed with Restart or Shut Down by clicking on the right button or cancel and get back to your desktop environment.
Offered GUI and options may differ slightly on the distribution and Desktop Environment you’re using but rest assured there is an option to change the power state of the system. And with GUI, it’s no more than few clicks in the power menu.
On a Linux box running systemd as the
init system, you can use systemctl command to reboot your machine.
$ sudo systemctl start reboot.target
Or you can simply use
systemctl with required option, like for reboot as:
$ sudo systemctl reboot
For initiating a shutdown,
systemctl command goes like:
$ sudo systemctl shutdown
To halt the system, use:
$ sudo systemctl halt
shutdown command can be used to power down as well as reboot a Linux system. To reboot a system immediately use:
$ sudo shutdown -r now
Or to power down a system without wait, use
$ sudo shutdown -P now
We can add a delay to
shutdown command to reboot/power off the system after a specified interval. This can be achieved as:
$ sudo shutdown -r 10
To halt a system without asking hardware to power off, you can use
$ sudo shutdown -H now
If you simply specify
shutdown command, the shutdown will get scheduled after a minute. To shut down at specific time use:
$ sudo shutdown 22:30
In many cases, while a system is going down it’ll broadcast a message to the console of logged-in users. If you want to add your custom message in this broadcast, you can specify a message along with
shutdown command as:
$ sudo shutdown 23:00 "Powering off system for maintenance...save your work"
To cancel a scheduled shutdown, you can use
$ sudo shutdown -c
On some systems,
shutdown command call
systemctl in the backend to achieve desired reboot/shutdown operation.
To gracefully reboot a system, you can also use
reboot command (may need to use with sudo).
$ sudo reboot
To power off the system with the reboot command, use
$ sudo reboot -p
To force a reboot (for systems not responding to normal
reboot command), you can try
-f flag as:
$ sudo reboot -f
To halt a system, you can simply use
$ sudo halt
To power off a system, you have the option to use
$ sudo poweroff
For systems not running on systemd,
telinit will also work) command offers options to change the system’s run-level. To reboot a system using
init, you can use:
$ sudo init 6
Similarly to halt a system, the
init command to use is:
$ sudo init 0
Calling a specific run-level using init causes the system’s init process to execute a series of init scripts in a particular order to ensure the system reaches the desired run-level. Run-level 6 is defined for reboot while run-level 0 if for halting the system.
For Linux running on a desktop or laptop, pressing the power button by default have the action of either putting the system to sleep or powering it down by sending the shutdown signal. This option can be tweaked from the system’s power settings. Although it should ideally be used as the last option if normal commands don’t work.
For a remote server running Linux, the power button usually powers off the system. But those located in remote data centers have the additional option to be rebooted or powered off from their remote lights-out management CLI/GUI tools offered by the respective server vendors.
Alt + SysRq Combination
For a non-responding, frozen system, it’s hard to bring it to a reboot or power off state. When you’ve no other option and as a last resort, you can try pressing
Alt + PrintScreen + a sequence of keys in order to instantly reboot the system. It may not be a preferred or recommended option but nevertheless can be used as a last resort.
Always remember that there is possibility of data loss and corruption using this method as with any other non-graceful, forced reboot or shutdown option will have. Ensure system best practices for backups and redundancy and be careful when using this option.
For this option to work, it should have been enabled in the Linux kernel. You can check this by using below command:
$ cat /proc/sys/kernel/sysrq
An output of 1 indicates its enabled completely, while a number greater than indicates its partially enabled with some features. To enable it explicitly, you can use:
$ sudo echo “1” > /proc/sys/kernel/sysrq
To reboot a system using this method, keep holding
Alt + SysRq (PrintScreen) and then press in sequence following keys after interval of few seconds between each key:
R E I S U B
or to shutdown press
O instead of
B at the end:
R E I S U O
Here what the keys mean:
- R: Switch keyboard from raw to XLATE mode
- E: Send SIGTERM signal to all processes except init
- I: Send SIGKILL signal to all processes except init
- S: Sync all mounted filesystems
- U: Remount all mounted filesystems as read-only
Lastly, we’ve either B or O which stands for:
- B: Immediately reboot the system, without unmounting partitions or syncing
- O: Immediately shut down the system, without unmounting partitions or syncing
So here go different ways that allow you to reboot or shut down a Linux system. It offers you options ranging from simple GUI interfaces to relatively complex terminal commands that can make your life easy or even allows you to automate stuff. For systems that froze for one reason or another, we discussed forced ways to achieve a reboot or shutdown state which may not be the ideal way but have to be used on rare occasions.
Take precautions while using the commands discussed in this article as they affect the system state and could possibly affect multiple users and services in the case of an enterprise server. Check out the man pages of commands suggested in this article to learn more about them and what all options they offer.