Stopping the System
For those of you who hadn’t noticed, Linux isn’t like DOS
or Windows. Despite the superficial similarity at the
command prompt and similarities in the GUI,
they have little in common. One very important difference is the way you stop the system.
In DOS or older versions of Windows
(i.e prior to Windows Vista) you are
completely omnipotent. You know everything that’s going on. You have complete
control over everything. If you decide that you’ve had enough and flip the power
switch, you are the only one doing so will effect. However, with dozens of
people working on an Linux system and dozens more using its resources, simply
turning off the machine is not something you want to do. Despite the fact that
you will annoy quite a few people, it can cause damage to your system, depending
on exactly what was happening when you killed the power. (Okay, you could also
create problems with a DOS
system, but with only one person, the chances are less likely).
On a multi-user system like Linux, many different things are
going on. You many not see any disk activity, but the system may still have
things in its buffers which are waiting for the chance to write to the hard disk. If you
turn off the power before this data is written, what is on the hard disk may be
inconsistent.
Reboot the system Using Ctrl-ALt-Del
Normally, pressing Ctrl-Alt-Del will reboot your system. You can prevent this by creating the file /etc/shutdown.allow, which
contains a list (one entry per line) of users. If this file exists, the system
will first check whether one of the users listed in shutdown.allow is logged in
on the system console. If none are, you see the message
shutdown: no authorized users logged in.
To make sure that things are stopped safely, you need to shut down your system
“properly.” What is considered “proper” can be a couple of things,
depending on the circumstances. Linux provides several tools to stop the system
and allows you to decide what is proper for your particular circumstance.
Flipping the power switch is not shutting down properly.
Note that the key combination Ctrl-Alt-Del is just a convention. There is nothing magic
about that key combination, other than people are used to it from DOS/Windows. By default,
the combination Ctrl-Alt-Del is assigned to the special keymap “Boot”. This is typically defined by
default in the file /usr/src/linux/drivers/char/defkeymap.map, which is the keyboard mapping the
kernel uses when it boots. However, you can use the loadkeys program to change this if
you need to.
If necessary, you could define that the combination Ctrl-Alt-Del is not assigned to anything, therefore
it would not shutdown your system. However, should the system get stuck in a state that you cannot correct, shutting it down with Ctrl-Alt-Del is often the only safe alternative (as compared with
simply flipping the power switch.)
When you press the “boot” key combination, the init program is sent the signal SIGINT. What init does will
depend on how the /etc/inittab is configured. In the section on run levels,
we talk about the various actions in /etc/inittab that tell init what to do when the key combination Ctrl-Alt-Del is pressed (one being ctraltdel). On my system it is defined as
/sbin/shutdown -r -t 4 now
which says to run the shutdown command immediately (now) and reboot (-r), waiting
four seconds between the time the warning message is sent and the shutdown procedure is started (-t 4).
Shutdown the system in 30 minutes and provide a message to anyone logged in using the shutdown command
Running shutdown is really the safest way of bringing your system down, although you
could get away with running init 0. This would bring the system down, but
would not give the users any warning. The shutdown command can be configured to give the users enough time to stop what they are working on and save all of their data.
Using the shutdown command, you have the ability not only to warn your users that the system is going down but also to give them the chance to finish up what they
were doing.
- Login as root
- Issue the command
shutdown -h +30 “System going down for maintenance. Back up after lunch.”
This message will appear on everyone’s screen immediately, then at increasing
intervals, until the system finally goes down.
If you have rebuilt your kernel or made other changes that require you to reboot your
system, you can use shutdown as well, by using the -r option.
Shutdown the system using the shutdown command
The first two tools to stop your system are actually two links in /sbin: halt and
reboot, that link to the same file. It’s likely that /sbin/reboot
is a symlink to /sbin/halt
If either of these is called and the system is not in
run-level 0 or 6, then shutdown (also in /sbin) is called instead.
Start a shutdown of the system in 15 minute and then cancel it
Reboot the system using the shutdown command
Shutdown the system using the halt command
| Option |
Description |
| -d |
Do not write to the /var/log/wtmp. |
| -f |
Force a reboot, i.e. do not call shutdown. |
| -i |
Shutdown the network interfaces before halting or rebooting. |
| -n |
Do not sync (write data to disk) before halting or rebooting. |
| -p |
Power off after shutdown. |
| -w |
Do not actually stop the system, just write to /var/log/wmtp. |
Table – Options to halt and reboot.
| Option |
Description |
| -c |
Cancel a shutdown that is in progress. |
| -f |
Don’t run fsck when the system reboots (i.e. a “fast” reboot). |
| -F |
Force fsck on reboot. |
| -h |
Halt the system when the shutdown is completed. |
| -k |
Send a warning message, but do not actually shutdown the system. |
| -n |
Shutdown without calling init. DEPRECATED. |
| -r |
Reboot the system after shutdown. |
| -t seconds |
Seconds to wait before starting the shutdown. |
| -z |
Shutdown using “software suspend”. |
Table – Options to shutdown.