Most linux distributions use some type of mechanism to gracefully stop daemons and unmount storage volumes during a reboot or shutdown. It’s most commonly done via init
or systemd
scripts that will wait for each daemon to shut down gracefully before proceeding to the next script.
Sometimes servers misbehave, and you can quickly end up in a situation where things are going badly. I’m talking about the type of situation where you’re connected via SSH to a remote server that sits in a tiny building 400 miles away from the nearest human being. We’re talking bad. If you issue a plain reboot command, it might ignore you are not finish the reboot and once SSH stops running, you’re going to be out of luck.
If you find yourself in this situation (and hopefully you won’t!), you have some options to get your way with a misbehaving server remotely. You can force an immediate reboot with the following:
echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger
This is pretty much the same as pressing the reset button on the server (if equipped). No daemons will be shut down gracefully, no filesystem sync will occur, and you may get the wrath of a fsck
(or worse, a non-booting server) upon reboot
If you want to shut the machine down entirely (Carefully think about this before using this on a remote system):
echo 1 > /proc/sys/kernel/sysrq echo o > /proc/sysrq-trigger