• Get application security done the right way! Detect, Protect, Monitor, Accelerate, and more…
  • 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.

    GUI Method

    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.

    ubuntu-mate-gui-power-menu

    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.

    ubuntu-mate-gui-sub-power-menu

    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.

    systemctl Command

    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

    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 -h or -P flag:

    $ 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 -H flag:

    $ 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 -c flag:

    $ sudo shutdown -c

    On some systems, shutdown command call systemctl in the backend to achieve desired reboot/shutdown operation.

    Reboot Command

    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 -p flag:

    $ sudo reboot -p

    To force a reboot (for systems not responding to normal reboot command), you can try -f flag as:

    $ sudo reboot -f

    Halt Command

    To halt a system, you can simply use halt command:

    $ sudo halt

    Poweroff Command

    To power off a system, you have the option to use poweroff command:

    $ sudo poweroff

    init Command

    For systems not running on systemd, init (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.

    Power Button

    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

    OR

    • O: Immediately shut down the system, without unmounting partitions or syncing

    Summary

    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.