When the shutdown command is invoked, the system sends messages notifying users of the impending shutdown. (Usually it is to give the users a bit of warning, lest they come back from the cafeteria and find a day's work destroyed.)
Next, the executing processes are sent a signal, and they terminate with varying degrees of grace. The subsystems are shut down, any users who didn't take the hint are kicked off by force, and any processes that didn't respond to the signal are killed. Any filesystem updates are written out to disk via sync, and, finally, init takes the system to its new runlevel.
A shutdown can be aborted by getting the process id of the shutdown process and killing it manually. However, this may interrupt things that are best left alone, so it is almost always safer just to let the shutdown finish and then start things back up again. |
The following commands are utilized in the startup/shutdown sequence:
dmesg | Display bootup messages. |
halt | Halt the system. |
reboot | Reboot the system. |
poweroff | Power the system off. |
lilo | Install the LILO boot loader. |
rdev | Display system startup configuration info. |
runlevel | Show the current system runlevel. |
shutdown | Bring the system down. |
swapon | Enable the paging hardware. |
swapoff | Disable the paging hardware. |
sync | Write buffered memory out to disk. |
init | Start system processes. |
telinit | Move the system to a new runlevel. |