shutdown
shutdown - bring the system down
The command shutdown can reboot the system or brings the system down in a secure way. It has primitive
scheduling capability: you can specify delay for N minutes. If shutdown is called with a delay, it creates the advisory file /etc/nologin which causes programs such as
login(1) to not allow new user logins. Shutdown removes this file if it is stopped
before it can signal init (i.e. it is cancelled or something goes wrong). It also removes it before calling init to change the runlevel.
More complex scheduling for shutdown in achieved via at command.
Before systemd screwed everything, the -H option just sets the init environment variable INIT_HALT to HALT, and the
-P
option just sets that variable to POWEROFF. The shutdown script that calls halt(8)
as the last thing in the shutdown sequence should check these environment variables and call
halt(8) with the right options for these options to
actually have any effect.
Time of reboot or shutdown is
recoded in /var/log/wtmp and can be viewed via last command, for example
last reboot
All logged-in users are notified that the system is going down, and
login(1) is blocked. It is possible to shut the system down immediately
or after a specified delay. All processes are first notified that the system is going down by the signal SIGTERM
. This gives programs like vi(1) the time to save the file being edited,
mail and news processing programs a chance to exit cleanly, etc. shutdown does its job by signalling the init
process, asking it to change the runlevel. Runlevel 0 is used to halt the system, runlevel 6 is used to
reboot the system, and runlevel 1 is used to put to system into a state where administrative tasks can be performed;
this is the default if neither the -h or -r flag is given to shutdown. To see which actions are taken on
halt or reboot see the appropriate entries for these runlevels in the file /etc/inittab.
/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]
The
time argument is mandatory; in 90% of all cases this argument is the word now. Which means immediate
reboot/shutdown.
/sbin/shutdown -r now
Time of reboot/shutdown is specified as HH:MM. You can use keyword now instead of time for immediate reboot. For example
/sbin/shutdown -r 21:00
With option -t you can additionally specify the number of seconds wait sec seconds
between sending processes the warning and the kill signal and changing to another runlevel.
The most important options are:
- -r Reboot after shutdown.
This is equivalent to command reboot, but in addition to rebooting system it sends message to all users (not very useful
with now ;-)
- -P poweroff after shutdown.
- -H halt after the shutdown.
All options:
- -a Use /etc/shutdown.allow.
- -t sec Tells init(8) to wait sec seconds
between sending processes the warning and the kill signal, before changing to another runlevel.
- -k Don't really shutdown; only send the warning messages to everybody.
- -r Reboot after shutdown.
- -h Halt or poweroff after shutdown.
- -H Halt action is to halt or drop into boot monitor on systems that support it.
- -P Halt action plus turn off the power.
- -n [DEPRECATED] Don't call init(8) to
do the shutdown but do it ourself. The use of this option is discouraged, and its results are not always what you'd expect. The -n flag causes shutdown not to call init, but to kill all running processes itself.
shutdown will then turn off quota, accounting, and swapping and unmount all filesystems.
- -f Skip fsck on reboot. The -f flag means 'reboot fast'. This only creates an advisory file /fastboot which can be tested by the system
when it comes up again. The boot rc file can test if this file is present, and decide not to run fsck(1) since the system
has been shut down in the proper way. After that, the boot process should remove /fastboot.
- -F Force fsck on reboot. The -F flag means 'force fsck'. This only creates an advisory file /forcefsck which can be tested by the system
when it comes up again. The boot rc file can test if this file is present, and decide to run fsck(1) with a special
'force' flag so that even properly unmounted filesystems get checked. After that, the boot process should remove /forcefsck.
- -c Cancel an already running shutdown. With this option it is of course not possible to give the time
argument, but you can enter a explanatory message on the command line that will be sent to all users.
- time When to shutdown.
- warning-message Message to send to all users.
The time argument
The time argument can have different formats.
- First, it can be an absolute time in the format hh:mm, in which
hh
is the hour (1 or 2 digits) and mm is the minute of the hour (in two digits).
- Second, it can be in the format +m,
in which m is the number of minutes to wait.
- The word now is an alias for +0.
If shutdown is called with a delay, it creates the advisory file /etc/nologin which causes programs such as
login(1) to not allow new user logins. Shutdown removes this file if it is stopped
before it can signal init (i.e. it is cancelled or something goes wrong). It also removes it before calling init to change the runlevel.
Examples
Linux shutdown Command Explained with Examples
Q2. How to halt machine using shutdown?
This can be achieved using the -H option.
shutdown -H
In case you aren't aware, there's a difference between halting and powering off a system. While the former involves stopping
all CPUs, the latter also makes sure the main power is disconnected.
Q3. How to make shutdown power-off machine?
Although this is by default, you can still use the -P option to explicitly specify that you want shutdown to power off the
system.
shutdown -P
Q4. How to reboot using shutdown?
For reboot, the option is -r.
shutdown -r
Q5. How to make shutdown only write wall message, or vice-versa?
In case you just want shutdown to shoot wall messages, without performing a halt, power-off, or reboot, use the -k
command line option.
shutdown -k
Q6. How to cancel a pending shutdown?
You can use shutdown to schedule a halt, power off, or reboot. For this, all you have to do is to pass the time at which you
want the process to start. For example:
shutdown -r 18:00
However, in case you want to cancel a scheduled shutdown, you can do that as well. This can be done using the -c command line
option.
More examples
• To halt the machine after given number of minutes, for example
$ shutdown -h +30
Broadcast message from root (pts/0) (Tue Nov 6 00:23:48 2012):
The system is going DOWN for system halt in 3 minutes!
• In 24 hour format,
$ shutdown -h 00:45
Broadcast message from root (pts/0) (Tue Nov 6 00:30:54 2012):
The system is going DOWN for system halt in 15 minutes!
• A custom message can also be provided
$ shutdown -h +60 "Disk failed. You have 24 hours to save you files before server sutdown."
Broadcast message from root (pts/0) (Tue Nov 6 00:43:48 2012):
Save your work.
The system is going DOWN for system halt in 5 minutes!
• The shutdown command waits for command completion before giving back the prompt. So it can be
cancelled with ctrl+c. Shutdown can also be cancelled with the -c option.
$ shutdown -c
Access Control
shutdown can be called from
init(8) when
the magic keys CTRL-ALT-DEL are pressed, by creating an appropriate entry in /etc/inittab. This means that everyone
who has physical access to the console keyboard can shut the system down. To prevent this, shutdown can check to see
if an authorized user is logged in on one of the virtual consoles.
If shutdown is called with the -a argument
(add this to the invocation of shutdown in /etc/inittab), it checks to see if the file /etc/shutdown.allow is present. It then
compares the login names in that file with the list of people that are logged in on a virtual console (from /var/run/utmp). Only
if one of those authorized users or root is logged in, it will proceed. Otherwise it will write the message
shutdown: no authorized users logged in
to the (physical) system console. The format of /etc/shutdown.allow is one user name per line. Empty lines and comment lines
(prefixed by a #) are allowed. Currently there is a limit of 32 users in this file.
Note that if /etc/shutdown.allow is not present, the -a argument is ignored.
Files
/fastboot
/etc/inittab
/etc/init.d/halt
/etc/init.d/reboot
/etc/shutdown.allow
Notes
A lot of users forget to give the time argument and are then puzzled by the error message shutdown produces. The
time argument is mandatory; in 90 percent of all cases this argument will be the word now.
Init can only capture CTRL-ALT-DEL and start shutdown in console mode. If the system is running the X window System, the X server
processes all key strokes. Some X11 environments make it possible to capture CTRL-ALT-DEL, but what exactly is done with that event
depends on that environment.
Shutdown wasn't designed to be run setuid. /etc/shutdown.allow is not used to find out who is executing shutdown, it ONLY checks
who is currently logged in on (one of the) console(s).
As you know linux implements some type of mechanism
to gracefully shutdown and reboot, this means the daemons are stopping, usually linux stops
them one by one, the file cache is synced to disk.
But what sometimes happens is that the system will not reboot or shutdown no mater how many
times you issue the shutdown or reboot command.
If the server is close to you, you can always just do a physical reset, but what if it's far
away from you, where you can't reach it, sometimes it's not feasible, why if the OpenSSH server
crashes and you cannot log in again in the system.
If you ever find yourself in a situation like that, there is another option to force the
system to reboot or shutdown.
The magic SysRq key is a key combination understood by the Linux kernel, which allows the
user to perform various low-level commands regardless of the system's state. It is often used
to recover from freezes, or to reboot a computer without corrupting the filesystem.
Description |
QWERTY |
Immediately reboot the system, without unmounting or syncing filesystems |
b |
Sync all mounted filesystems |
s |
Shut off the system |
o |
Send the SIGKILL signal to all processes except init |
i |
So if you are in a situation where you cannot reboot or shutdown the server, you can force
an immediate reboot by issuing
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
If you want you can also force a sync before rebooting by issuing these commands
echo 1 > /proc/sys/kernel/sysrq
echo s > /proc/sysrq-trigger
echo b > /proc/sysrq-trigger
These are called magic commands , and they're pretty much
synonymous with holding down Alt-SysRq and another key on older keyboards. Dropping 1 into
/proc/sys/kernel/sysrq tells the kernel that you want to enable SysRq access (it's usually
disabled). The second command is equivalent to pressing * Alt-SysRq-b on a QWERTY
keyboard.
If you want to keep SysRq enabled all the time, you can do that with an entry in your
server's sysctl.conf:
echo "kernel.sysrq = 1" >> /etc/sysctl.conf
Restart the system with shutdown command
There is a separate
reboot command
but you don't need to learn a new command just for rebooting the system. You can use the Linux
shutdown command for rebooting as wel.
To reboot a system using the shutdown command, use the -r option.
sudo shutdown -r
The behavior is the same as the regular shutdown command. It's just that instead of a shutdown, the system will be
restarted.
So, if you used shutdown -r without any time argument, it will schedule a reboot after one minute.
You can schedule reboots the same way you did with shutdown.
sudo shutdown -r +30
You can also reboot the system immediately with shutdown command:
sudo shutdown -r now
4. Broadcast a custom message
If you are in a multi-user environment and there are several users logged on the system, you can send them a
custom broadcast message with the shutdown command.
By default, all the logged users will receive a notification about scheduled shutdown and its time. You can
customize the broadcast message in the shutdown command itself:
sudo shutdown 16:00 "systems will be shutdown for hardware upgrade, please save your work"
Fun Stuff: You
can use the shutdown command with -k option to initiate a 'fake shutdown'. It won't shutdown the system but the
broadcast message will be sent to all logged on users.
5. Cancel a scheduled shutdown
If you scheduled a shutdown, you don't have to live with it. You can always cancel a shutdown with option -c.
sudo shutdown -c
And if you had broadcasted a messaged about the scheduled shutdown, as a good sysadmin, you might also want to
notify other users about
cancelling
the scheduled shutdown.
sudo shutdown -c "planned shutdown has been cancelled"
Halt vs Power off
Halt (option -H): terminates all processes and shuts down the
cpu
.
Power off (option -P): Pretty much like halt but it also turns off the unit itself (lights and everything on the
system).
Historically, the earlier computers used to halt the system and then print a message like "it's ok to power off now"
and then the computers were turned off through physical switches.
These days,
halt
should
automically
power off the system thanks to
ACPI
.
These were the most common and the most useful examples of the Linux shutdown command. I hope you have learned how
to shut down a Linux system via command line. You might also like reading about the
less command usage
or browse through the
list of Linux commands
we have covered so far.
If you have any questions or suggestions, feel free to let me know in the comment section.
Softpanorama Recommended
shutdown (8)
Commands to Shutdown Linux from Terminal with
Examples
Linux shutdown Command Explained with Examples
Linux shutdown command help and examples
5 Linux commands to shutdown and reboot
the system – BinaryTides
Society
Groupthink :
Two Party System
as Polyarchy :
Corruption of Regulators :
Bureaucracies :
Understanding Micromanagers
and Control Freaks : Toxic Managers :
Harvard Mafia :
Diplomatic Communication
: Surviving a Bad Performance
Review : Insufficient Retirement Funds as
Immanent Problem of Neoliberal Regime : PseudoScience :
Who Rules America :
Neoliberalism
: The Iron
Law of Oligarchy :
Libertarian Philosophy
Quotes
War and Peace
: Skeptical
Finance : John
Kenneth Galbraith :Talleyrand :
Oscar Wilde :
Otto Von Bismarck :
Keynes :
George Carlin :
Skeptics :
Propaganda : SE
quotes : Language Design and Programming Quotes :
Random IT-related quotes :
Somerset Maugham :
Marcus Aurelius :
Kurt Vonnegut :
Eric Hoffer :
Winston Churchill :
Napoleon Bonaparte :
Ambrose Bierce :
Bernard Shaw :
Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient
markets hypothesis :
Political Skeptic Bulletin, 2013 :
Unemployment Bulletin, 2010 :
Vol 23, No.10
(October, 2011) An observation about corporate security departments :
Slightly Skeptical Euromaydan Chronicles, June 2014 :
Greenspan legacy bulletin, 2008 :
Vol 25, No.10 (October, 2013) Cryptolocker Trojan
(Win32/Crilock.A) :
Vol 25, No.08 (August, 2013) Cloud providers
as intelligence collection hubs :
Financial Humor Bulletin, 2010 :
Inequality Bulletin, 2009 :
Financial Humor Bulletin, 2008 :
Copyleft Problems
Bulletin, 2004 :
Financial Humor Bulletin, 2011 :
Energy Bulletin, 2010 :
Malware Protection Bulletin, 2010 : Vol 26,
No.1 (January, 2013) Object-Oriented Cult :
Political Skeptic Bulletin, 2011 :
Vol 23, No.11 (November, 2011) Softpanorama classification
of sysadmin horror stories : Vol 25, No.05
(May, 2013) Corporate bullshit as a communication method :
Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000):
the triumph of the US computer engineering :
Donald Knuth : TAoCP
and its Influence of Computer Science : Richard Stallman
: Linus Torvalds :
Larry Wall :
John K. Ousterhout :
CTSS : Multix OS Unix
History : Unix shell history :
VI editor :
History of pipes concept :
Solaris : MS DOS
: Programming Languages History :
PL/1 : Simula 67 :
C :
History of GCC development :
Scripting Languages :
Perl history :
OS History : Mail :
DNS : SSH
: CPU Instruction Sets :
SPARC systems 1987-2006 :
Norton Commander :
Norton Utilities :
Norton Ghost :
Frontpage history :
Malware Defense History :
GNU Screen :
OSS early history
Classic books:
The Peter
Principle : Parkinson
Law : 1984 :
The Mythical Man-Month :
How to Solve It by George Polya :
The Art of Computer Programming :
The Elements of Programming Style :
The Unix Hater’s Handbook :
The Jargon file :
The True Believer :
Programming Pearls :
The Good Soldier Svejk :
The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society :
Ten Commandments
of the IT Slackers Society : Computer Humor Collection
: BSD Logo Story :
The Cuckoo's Egg :
IT Slang : C++ Humor
: ARE YOU A BBS ADDICT? :
The Perl Purity Test :
Object oriented programmers of all nations
: Financial Humor :
Financial Humor Bulletin,
2008 : Financial
Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related
Humor : Programming Language Humor :
Goldman Sachs related humor :
Greenspan humor : C Humor :
Scripting Humor :
Real Programmers Humor :
Web Humor : GPL-related Humor
: OFM Humor :
Politically Incorrect Humor :
IDS Humor :
"Linux Sucks" Humor : Russian
Musical Humor : Best Russian Programmer
Humor : Microsoft plans to buy Catholic Church
: Richard Stallman Related Humor :
Admin Humor : Perl-related
Humor : Linus Torvalds Related
humor : PseudoScience Related Humor :
Networking Humor :
Shell Humor :
Financial Humor Bulletin,
2011 : Financial
Humor Bulletin, 2012 :
Financial Humor Bulletin,
2013 : Java Humor : Software
Engineering Humor : Sun Solaris Related Humor :
Education Humor : IBM
Humor : Assembler-related Humor :
VIM Humor : Computer
Viruses Humor : Bright tomorrow is rescheduled
to a day after tomorrow : Classic Computer
Humor
The Last but not Least Technology is dominated by
two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt.
Ph.D
Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org
was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP)
without any remuneration. This document is an industrial compilation designed and created exclusively
for educational use and is distributed under the Softpanorama Content License.
Original materials copyright belong
to respective owners. Quotes are made for educational purposes only
in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains
copyrighted material the use of which has not always been specifically
authorized by the copyright owner. We are making such material available
to advance understanding of computer science, IT technology, economic, scientific, and social
issues. We believe this constitutes a 'fair use' of any such
copyrighted material as provided by section 107 of the US Copyright Law according to which
such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free)
site written by people for whom English is not a native language. Grammar and spelling errors should
be expected. The site contain some broken links as it develops like a living tree...
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or
referenced source) and are
not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness
of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be
tracked by Google please disable Javascript for this site. This site is perfectly usable without
Javascript.
Last modified: March, 29, 2020